diff --git a/pkg/handler/project/project.go b/pkg/handler/project/project.go index 30f79d5ac..dfbe06951 100644 --- a/pkg/handler/project/project.go +++ b/pkg/handler/project/project.go @@ -117,7 +117,7 @@ func (h *handler) List(c *gin.Context) { projects, total, err := h.store.Project.All(h.repo.DB(), project.GetListProjectInput{ Statuses: query.Status, Name: query.Name, - Type: query.Type, + Types: query.Type, }, pagination) if err != nil { l.Error(err, "error query project from db") diff --git a/pkg/handler/project/request/request.go b/pkg/handler/project/request/request.go index bfacfa9da..c2559e358 100644 --- a/pkg/handler/project/request/request.go +++ b/pkg/handler/project/request/request.go @@ -20,7 +20,7 @@ type GetListProjectInput struct { Name string `form:"name" json:"name"` Status []string `form:"status" json:"status"` - Type string `form:"type" json:"type"` + Type []string `form:"type" json:"type"` } // @name GetListProjectInput type UpdateProjectGeneralInfoRequest struct { @@ -104,8 +104,12 @@ func (i *GetListProjectInput) StandardizeInput() { } func (i *GetListProjectInput) Validate() error { - if i.Type != "" && !model.ProjectType(i.Type).IsValid() { - return errs.ErrInvalidProjectType + if len(i.Type) > 0 { + for _, projectType := range i.Type { + if utils.RemoveAllSpace(projectType) != "" && !model.ProjectType(projectType).IsValid() { + return errs.ErrInvalidProjectType + } + } } if len(i.Status) > 0 { for _, status := range i.Status { diff --git a/pkg/store/project/project.go b/pkg/store/project/project.go index b90eade72..883a9ed2f 100644 --- a/pkg/store/project/project.go +++ b/pkg/store/project/project.go @@ -33,8 +33,8 @@ func (s *store) All(db *gorm.DB, input GetListProjectInput, pagination model.Pag query = query.Where("projects.status IN ?", input.Statuses) } - if input.Type != "" { - query = query.Where("projects.type = ?", input.Type) + if len(input.Types) > 0 { + query = query.Where("projects.type IN ?", input.Types) } if input.AllowsSendingSurvey { diff --git a/pkg/store/project/request.go b/pkg/store/project/request.go index a19fa3666..fd791e90b 100644 --- a/pkg/store/project/request.go +++ b/pkg/store/project/request.go @@ -3,6 +3,6 @@ package project type GetListProjectInput struct { Statuses []string `json:"statuses"` Name string `json:"name"` - Type string `json:"type"` + Types []string `json:"type"` AllowsSendingSurvey bool `json:"allowsSendingSurvey"` }