From 866b8a062e3013595aae3680b0a3099a41dfce09 Mon Sep 17 00:00:00 2001 From: kumfo Date: Tue, 25 Oct 2022 11:45:45 +0800 Subject: [PATCH 1/2] style: search form validate --- internal/controller/search_controller.go | 40 ++++-------------------- internal/schema/search_schema.go | 12 +++---- 2 files changed, 11 insertions(+), 41 deletions(-) diff --git a/internal/controller/search_controller.go b/internal/controller/search_controller.go index 5e2e4ae6..517222cb 100644 --- a/internal/controller/search_controller.go +++ b/internal/controller/search_controller.go @@ -3,12 +3,10 @@ package controller import ( "github.com/answerdev/answer/internal/base/handler" "github.com/answerdev/answer/internal/base/middleware" - "github.com/answerdev/answer/internal/base/reason" "github.com/answerdev/answer/internal/schema" "github.com/answerdev/answer/internal/service" - "github.com/answerdev/answer/pkg/converter" "github.com/gin-gonic/gin" - "github.com/segmentfault/pacman/errors" + "github.com/segmentfault/pacman/log" ) // SearchController tag controller @@ -32,39 +30,13 @@ func NewSearchController(searchService *service.SearchService) *SearchController // @Success 200 {object} handler.RespBody{data=schema.SearchListResp} // @Router /answer/api/v1/search [get] func (sc *SearchController) Search(ctx *gin.Context) { - var ( - q, - order, - page, - size string - ok bool - dto schema.SearchDTO - ) - q, ok = ctx.GetQuery("q") - if len(q) == 0 || !ok { - handler.HandleResponse(ctx, errors.BadRequest(reason.RequestFormatError), q) + dto := schema.SearchDTO{} + + if handler.BindAndCheck(ctx, &dto) { return } - page, ok = ctx.GetQuery("page") - if !ok { - page = "1" - } - size, ok = ctx.GetQuery("size") - if !ok { - size = "30" - } - order, ok = ctx.GetQuery("order") - if !ok || (order != "newest" && order != "active" && order != "score" && order != "relevance") { - order = "newest" - } - - dto = schema.SearchDTO{ - Query: q, - Page: converter.StringToInt(page), - Size: converter.StringToInt(size), - UserID: middleware.GetLoginUserIDFromContext(ctx), - Order: order, - } + dto.UserID = middleware.GetLoginUserIDFromContext(ctx) + log.Error(dto) resp, total, extra, err := sc.searchService.Search(ctx, &dto) diff --git a/internal/schema/search_schema.go b/internal/schema/search_schema.go index 9fdd5728..5cf8c577 100644 --- a/internal/schema/search_schema.go +++ b/internal/schema/search_schema.go @@ -1,13 +1,11 @@ package schema type SearchDTO struct { - // Query the query string - Query string - // UserID current login user ID - UserID string - Page int - Size int - Order string + UserID string // UserID current login user ID + Query string `validate:"required,gte=1,lte=60" json:"q" form:"q"` // Query the query string + Page int `validate:"omitempty,min=1" form:"page,default=1" json:"page"` //Query number of pages + Size int `validate:"omitempty,min=1,max=50" form:"size,default=30" json:"size"` //Search page size + Order string `validate:"required,oneof=newest active score relevance" form:"order,default=relevance" json:"order" enums:"newest,active,score,relevance"` } type SearchObject struct { From b7510107d5437af9f9d628ec839170dd36990b45 Mon Sep 17 00:00:00 2001 From: kumfo Date: Tue, 25 Oct 2022 11:47:38 +0800 Subject: [PATCH 2/2] style: search form validate --- internal/controller/search_controller.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/internal/controller/search_controller.go b/internal/controller/search_controller.go index 517222cb..5b658351 100644 --- a/internal/controller/search_controller.go +++ b/internal/controller/search_controller.go @@ -6,7 +6,6 @@ import ( "github.com/answerdev/answer/internal/schema" "github.com/answerdev/answer/internal/service" "github.com/gin-gonic/gin" - "github.com/segmentfault/pacman/log" ) // SearchController tag controller @@ -36,7 +35,6 @@ func (sc *SearchController) Search(ctx *gin.Context) { return } dto.UserID = middleware.GetLoginUserIDFromContext(ctx) - log.Error(dto) resp, total, extra, err := sc.searchService.Search(ctx, &dto)