diff --git a/api/_build/openapi.yaml b/api/_build/openapi.yaml index 215eabc..b3eacb4 100644 --- a/api/_build/openapi.yaml +++ b/api/_build/openapi.yaml @@ -173,11 +173,7 @@ paths: - in: query name: watch_status schema: - type: array - items: - $ref: '#/components/schemas/UserTitleStatus' - style: form - explode: false + $ref: '#/components/schemas/UserTitleStatus' - in: query name: rating schema: diff --git a/api/api.gen.go b/api/api.gen.go index dcc2f89..e1f94c2 100644 --- a/api/api.gen.go +++ b/api/api.gen.go @@ -189,14 +189,14 @@ type GetUsersUserIdTitlesParams struct { Word *string `form:"word,omitempty" json:"word,omitempty"` // Status List of title statuses to filter - Status *[]TitleStatus `form:"status,omitempty" json:"status,omitempty"` - WatchStatus *[]UserTitleStatus `form:"watch_status,omitempty" json:"watch_status,omitempty"` - Rating *float64 `form:"rating,omitempty" json:"rating,omitempty"` - MyRate *int32 `form:"my_rate,omitempty" json:"my_rate,omitempty"` - ReleaseYear *int32 `form:"release_year,omitempty" json:"release_year,omitempty"` - ReleaseSeason *ReleaseSeason `form:"release_season,omitempty" json:"release_season,omitempty"` - Limit *int32 `form:"limit,omitempty" json:"limit,omitempty"` - Fields *string `form:"fields,omitempty" json:"fields,omitempty"` + Status *[]TitleStatus `form:"status,omitempty" json:"status,omitempty"` + WatchStatus *UserTitleStatus `form:"watch_status,omitempty" json:"watch_status,omitempty"` + Rating *float64 `form:"rating,omitempty" json:"rating,omitempty"` + MyRate *int32 `form:"my_rate,omitempty" json:"my_rate,omitempty"` + ReleaseYear *int32 `form:"release_year,omitempty" json:"release_year,omitempty"` + ReleaseSeason *ReleaseSeason `form:"release_season,omitempty" json:"release_season,omitempty"` + Limit *int32 `form:"limit,omitempty" json:"limit,omitempty"` + Fields *string `form:"fields,omitempty" json:"fields,omitempty"` } // Getter for additional properties for Title. Returns the specified @@ -840,7 +840,7 @@ func (siw *ServerInterfaceWrapper) GetUsersUserIdTitles(c *gin.Context) { // ------------- Optional query parameter "watch_status" ------------- - err = runtime.BindQueryParameter("form", false, false, "watch_status", c.Request.URL.Query(), ¶ms.WatchStatus) + err = runtime.BindQueryParameter("form", true, false, "watch_status", c.Request.URL.Query(), ¶ms.WatchStatus) if err != nil { siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter watch_status: %w", err), http.StatusBadRequest) return diff --git a/api/paths/users-id-titles.yaml b/api/paths/users-id-titles.yaml index a76cc40..91b212d 100644 --- a/api/paths/users-id-titles.yaml +++ b/api/paths/users-id-titles.yaml @@ -29,11 +29,7 @@ get: - in: query name: watch_status schema: - type: array - items: - $ref: '../schemas/enums/UserTitleStatus.yaml' - style: form - explode: false + $ref: '../schemas/enums/UserTitleStatus.yaml' - in: query name: rating schema: diff --git a/modules/backend/handlers/common.go b/modules/backend/handlers/common.go index dc3a4ba..89a3d59 100644 --- a/modules/backend/handlers/common.go +++ b/modules/backend/handlers/common.go @@ -42,7 +42,7 @@ func (s Server) mapTitle(ctx context.Context, title sqlc.GetTitleByIDRow) (oapi. return oapi.Title{}, fmt.Errorf("unmarshal TitleNames: %v", err) } - if len(title.EpisodesLen) > 0 { + if title.EpisodesLen != nil && len(title.EpisodesLen) > 0 { episodes_lens := make(map[string]float64, 0) err = json.Unmarshal(title.EpisodesLen, &episodes_lens) if err != nil { @@ -99,23 +99,3 @@ func parseInt64(s string) (int32, error) { i, err := strconv.ParseInt(s, 10, 64) return int32(i), err } - -func TitleStatus2Sqlc(s *[]oapi.TitleStatus) ([]sqlc.TitleStatusT, error) { - var sqlc_status []sqlc.TitleStatusT - if s == nil { - return nil, nil - } - for _, t := range *s { - switch t { - case oapi.TitleStatusFinished: - sqlc_status = append(sqlc_status, sqlc.TitleStatusTFinished) - case oapi.TitleStatusOngoing: - sqlc_status = append(sqlc_status, sqlc.TitleStatusTOngoing) - case oapi.TitleStatusPlanned: - sqlc_status = append(sqlc_status, sqlc.TitleStatusTPlanned) - default: - return nil, fmt.Errorf("unexpected tittle status: %s", t) - } - } - return sqlc_status, nil -} diff --git a/modules/backend/handlers/titles.go b/modules/backend/handlers/titles.go index 054b745..d593314 100644 --- a/modules/backend/handlers/titles.go +++ b/modules/backend/handlers/titles.go @@ -20,6 +20,32 @@ func Word2Sqlc(s *string) *string { return s } +type SqlcStatus struct { + ongoing string + finished string + planned string +} + +// func TitleStatus2Sqlc(s *[]oapi.TitleStatus) (*SqlcStatus, error) { +// var sqlc_status SqlcStatus +// if s == nil { +// return &sqlc_status, nil +// } +// for _, t := range *s { +// switch t { +// case oapi.TitleStatusFinished: +// sqlc_status.finished = "finished" +// case oapi.TitleStatusOngoing: +// sqlc_status.ongoing = "ongoing" +// case oapi.TitleStatusPlanned: +// sqlc_status.planned = "planned" +// default: +// return nil, fmt.Errorf("unexpected tittle status: %s", t) +// } +// } +// return &sqlc_status, nil +// } + func TitleStatus2oapi(s *sqlc.TitleStatusT) (*oapi.TitleStatus, error) { if s == nil { return nil, nil @@ -164,15 +190,17 @@ func (s Server) GetTitles(ctx context.Context, request oapi.GetTitlesRequestObje return oapi.GetTitles400Response{}, err } - title_statuses, err := TitleStatus2Sqlc(request.Params.Status) - if err != nil { - log.Errorf("%v", err) - return oapi.GetTitles400Response{}, err + var statuses_sort []string + if request.Params.Status != nil { + for _, s := range *request.Params.Status { + ss := string(s) // s type is alias for string + statuses_sort = append(statuses_sort, ss) + } } params := sqlc.SearchTitlesParams{ Word: word, - TitleStatuses: title_statuses, + TitleStatuses: statuses_sort, Rating: request.Params.Rating, ReleaseYear: request.Params.ReleaseYear, ReleaseSeason: season, diff --git a/modules/backend/handlers/users.go b/modules/backend/handlers/users.go index 3a271d7..3223389 100644 --- a/modules/backend/handlers/users.go +++ b/modules/backend/handlers/users.go @@ -62,6 +62,13 @@ func sqlDate2oapi(p_date pgtype.Timestamptz) *time.Time { return nil } +type SqlcUserStatus struct { + dropped string + finished string + planned string + in_progress string +} + // func UserTitleStatus2Sqlc(s *[]oapi.UserTitleStatus) (*SqlcUserStatus, error) { // var sqlc_status SqlcUserStatus // if s == nil { @@ -103,28 +110,6 @@ func sql2usertitlestatus(s sqlc.UsertitleStatusT) (oapi.UserTitleStatus, error) return status, nil } -func UserTitleStatus2Sqlc(s *[]oapi.UserTitleStatus) ([]sqlc.UsertitleStatusT, error) { - var sqlc_status []sqlc.UsertitleStatusT - if s == nil { - return nil, nil - } - for _, t := range *s { - switch t { - case oapi.UserTitleStatusFinished: - sqlc_status = append(sqlc_status, sqlc.UsertitleStatusTFinished) - case oapi.UserTitleStatusInProgress: - sqlc_status = append(sqlc_status, sqlc.UsertitleStatusTInProgress) - case oapi.UserTitleStatusDropped: - sqlc_status = append(sqlc_status, sqlc.UsertitleStatusTDropped) - case oapi.UserTitleStatusPlanned: - sqlc_status = append(sqlc_status, sqlc.UsertitleStatusTPlanned) - default: - return nil, fmt.Errorf("unexpected tittle status: %s", t) - } - } - return sqlc_status, nil -} - func (s Server) mapUsertitle(ctx context.Context, t sqlc.SearchUserTitlesRow) (oapi.UserTitle, error) { oapi_usertitle := oapi.UserTitle{ @@ -186,29 +171,25 @@ func (s Server) GetUsersUserIdTitles(ctx context.Context, request oapi.GetUsersU return oapi.GetUsersUserIdTitles400Response{}, err } - // var statuses_sort []string - // if request.Params.Status != nil { - // for _, s := range *request.Params.Status { - // ss := string(s) // s type is alias for string - // statuses_sort = append(statuses_sort, ss) - // } - // } - - watch_status, err := UserTitleStatus2Sqlc(request.Params.WatchStatus) - if err != nil { - log.Errorf("%v", err) - return oapi.GetUsersUserIdTitles400Response{}, err + var statuses_sort []string + if request.Params.Status != nil { + for _, s := range *request.Params.Status { + ss := string(s) // s type is alias for string + statuses_sort = append(statuses_sort, ss) + } } - title_statuses, err := TitleStatus2Sqlc(request.Params.Status) - if err != nil { - log.Errorf("%v", err) - return oapi.GetUsersUserIdTitles400Response{}, err + var watch_status []string + if request.Params.WatchStatus != nil { + for _, s := range *request.Params.WatchStatus { + ss := string(s) // s type is alias for string + watch_status = append(statuses_sort, ss) + } } params := sqlc.SearchUserTitlesParams{ Word: word, - TitleStatuses: title_statuses, + TitleStatuses: statuses_sort, UsertitleStatuses: watch_status, Rating: request.Params.Rating, Rate: request.Params.MyRate,