diff --git a/api/api.gen.go b/api/api.gen.go index 74a2d52..5222930 100644 --- a/api/api.gen.go +++ b/api/api.gen.go @@ -26,17 +26,9 @@ const ( // Defines values for TitleStatus. const ( - TitleStatusFinished TitleStatus = "finished" - TitleStatusOngoing TitleStatus = "ongoing" - TitleStatusPlanned TitleStatus = "planned" -) - -// Defines values for UserTitleStatus. -const ( - UserTitleStatusDropped UserTitleStatus = "dropped" - UserTitleStatusFinished UserTitleStatus = "finished" - UserTitleStatusInProgress UserTitleStatus = "in-progress" - UserTitleStatusPlanned UserTitleStatus = "planned" + Finished TitleStatus = "finished" + Ongoing TitleStatus = "ongoing" + Planned TitleStatus = "planned" ) // Image defines model for Image. @@ -118,27 +110,8 @@ type User struct { UserDesc *string `json:"user_desc,omitempty"` } -// UserTitle defines model for UserTitle. -type UserTitle struct { - Ctime *time.Time `json:"ctime,omitempty"` - Rate *int32 `json:"rate,omitempty"` - ReviewId *int64 `json:"review_id,omitempty"` - - // Status User's title status - Status UserTitleStatus `json:"status"` - TitleId int64 `json:"title_id"` - UserId int64 `json:"user_id"` - AdditionalProperties map[string]interface{} `json:"-"` -} - -// UserTitleStatus User's title status -type UserTitleStatus string - -// Cursor defines model for cursor. -type Cursor = string - -// GetTitlesParams defines parameters for GetTitles. -type GetTitlesParams struct { +// GetTitleParams defines parameters for GetTitle. +type GetTitleParams struct { Word *string `form:"word,omitempty" json:"word,omitempty"` Status *TitleStatus `form:"status,omitempty" json:"status,omitempty"` Rating *float64 `form:"rating,omitempty" json:"rating,omitempty"` @@ -149,8 +122,8 @@ type GetTitlesParams struct { Fields *string `form:"fields,omitempty" json:"fields,omitempty"` } -// GetTitlesTitleIdParams defines parameters for GetTitlesTitleId. -type GetTitlesTitleIdParams struct { +// GetTitleTitleIdParams defines parameters for GetTitleTitleId. +type GetTitleTitleIdParams struct { Fields *string `form:"fields,omitempty" json:"fields,omitempty"` } @@ -159,15 +132,6 @@ type GetUsersUserIdParams struct { Fields *string `form:"fields,omitempty" json:"fields,omitempty"` } -// GetUsersUserIdTitlesParams defines parameters for GetUsersUserIdTitles. -type GetUsersUserIdTitlesParams struct { - Cursor *Cursor `form:"cursor,omitempty" json:"cursor,omitempty"` - Query *string `form:"query,omitempty" json:"query,omitempty"` - Limit *int `form:"limit,omitempty" json:"limit,omitempty"` - Offset *int `form:"offset,omitempty" json:"offset,omitempty"` - Fields *string `form:"fields,omitempty" json:"fields,omitempty"` -} - // Getter for additional properties for Title. Returns the specified // element and whether it was found func (a Title) Get(fieldName string) (value interface{}, found bool) { @@ -410,157 +374,17 @@ func (a Title) MarshalJSON() ([]byte, error) { return json.Marshal(object) } -// Getter for additional properties for UserTitle. Returns the specified -// element and whether it was found -func (a UserTitle) Get(fieldName string) (value interface{}, found bool) { - if a.AdditionalProperties != nil { - value, found = a.AdditionalProperties[fieldName] - } - return -} - -// Setter for additional properties for UserTitle -func (a *UserTitle) Set(fieldName string, value interface{}) { - if a.AdditionalProperties == nil { - a.AdditionalProperties = make(map[string]interface{}) - } - a.AdditionalProperties[fieldName] = value -} - -// Override default JSON handling for UserTitle to handle AdditionalProperties -func (a *UserTitle) UnmarshalJSON(b []byte) error { - object := make(map[string]json.RawMessage) - err := json.Unmarshal(b, &object) - if err != nil { - return err - } - - if raw, found := object["ctime"]; found { - err = json.Unmarshal(raw, &a.Ctime) - if err != nil { - return fmt.Errorf("error reading 'ctime': %w", err) - } - delete(object, "ctime") - } - - if raw, found := object["rate"]; found { - err = json.Unmarshal(raw, &a.Rate) - if err != nil { - return fmt.Errorf("error reading 'rate': %w", err) - } - delete(object, "rate") - } - - if raw, found := object["review_id"]; found { - err = json.Unmarshal(raw, &a.ReviewId) - if err != nil { - return fmt.Errorf("error reading 'review_id': %w", err) - } - delete(object, "review_id") - } - - if raw, found := object["status"]; found { - err = json.Unmarshal(raw, &a.Status) - if err != nil { - return fmt.Errorf("error reading 'status': %w", err) - } - delete(object, "status") - } - - if raw, found := object["title_id"]; found { - err = json.Unmarshal(raw, &a.TitleId) - if err != nil { - return fmt.Errorf("error reading 'title_id': %w", err) - } - delete(object, "title_id") - } - - if raw, found := object["user_id"]; found { - err = json.Unmarshal(raw, &a.UserId) - if err != nil { - return fmt.Errorf("error reading 'user_id': %w", err) - } - delete(object, "user_id") - } - - if len(object) != 0 { - a.AdditionalProperties = make(map[string]interface{}) - for fieldName, fieldBuf := range object { - var fieldVal interface{} - err := json.Unmarshal(fieldBuf, &fieldVal) - if err != nil { - return fmt.Errorf("error unmarshaling field %s: %w", fieldName, err) - } - a.AdditionalProperties[fieldName] = fieldVal - } - } - return nil -} - -// Override default JSON handling for UserTitle to handle AdditionalProperties -func (a UserTitle) MarshalJSON() ([]byte, error) { - var err error - object := make(map[string]json.RawMessage) - - if a.Ctime != nil { - object["ctime"], err = json.Marshal(a.Ctime) - if err != nil { - return nil, fmt.Errorf("error marshaling 'ctime': %w", err) - } - } - - if a.Rate != nil { - object["rate"], err = json.Marshal(a.Rate) - if err != nil { - return nil, fmt.Errorf("error marshaling 'rate': %w", err) - } - } - - if a.ReviewId != nil { - object["review_id"], err = json.Marshal(a.ReviewId) - if err != nil { - return nil, fmt.Errorf("error marshaling 'review_id': %w", err) - } - } - - object["status"], err = json.Marshal(a.Status) - if err != nil { - return nil, fmt.Errorf("error marshaling 'status': %w", err) - } - - object["title_id"], err = json.Marshal(a.TitleId) - if err != nil { - return nil, fmt.Errorf("error marshaling 'title_id': %w", err) - } - - object["user_id"], err = json.Marshal(a.UserId) - if err != nil { - return nil, fmt.Errorf("error marshaling 'user_id': %w", err) - } - - for fieldName, field := range a.AdditionalProperties { - object[fieldName], err = json.Marshal(field) - if err != nil { - return nil, fmt.Errorf("error marshaling '%s': %w", fieldName, err) - } - } - return json.Marshal(object) -} - // ServerInterface represents all server handlers. type ServerInterface interface { // Get titles - // (GET /titles) - GetTitles(c *gin.Context, params GetTitlesParams) + // (GET /title) + GetTitle(c *gin.Context, params GetTitleParams) // Get title description - // (GET /titles/{title_id}) - GetTitlesTitleId(c *gin.Context, titleId int64, params GetTitlesTitleIdParams) + // (GET /title/{title_id}) + GetTitleTitleId(c *gin.Context, titleId int64, params GetTitleTitleIdParams) // Get user info // (GET /users/{user_id}) GetUsersUserId(c *gin.Context, userId string, params GetUsersUserIdParams) - // Get user titles - // (GET /users/{user_id}/titles/) - GetUsersUserIdTitles(c *gin.Context, userId string, params GetUsersUserIdTitlesParams) } // ServerInterfaceWrapper converts contexts to parameters. @@ -572,13 +396,13 @@ type ServerInterfaceWrapper struct { type MiddlewareFunc func(c *gin.Context) -// GetTitles operation middleware -func (siw *ServerInterfaceWrapper) GetTitles(c *gin.Context) { +// GetTitle operation middleware +func (siw *ServerInterfaceWrapper) GetTitle(c *gin.Context) { var err error // Parameter object where we will unmarshal all parameters from the context - var params GetTitlesParams + var params GetTitleParams // ------------- Optional query parameter "word" ------------- @@ -651,11 +475,11 @@ func (siw *ServerInterfaceWrapper) GetTitles(c *gin.Context) { } } - siw.Handler.GetTitles(c, params) + siw.Handler.GetTitle(c, params) } -// GetTitlesTitleId operation middleware -func (siw *ServerInterfaceWrapper) GetTitlesTitleId(c *gin.Context) { +// GetTitleTitleId operation middleware +func (siw *ServerInterfaceWrapper) GetTitleTitleId(c *gin.Context) { var err error @@ -669,7 +493,7 @@ func (siw *ServerInterfaceWrapper) GetTitlesTitleId(c *gin.Context) { } // Parameter object where we will unmarshal all parameters from the context - var params GetTitlesTitleIdParams + var params GetTitleTitleIdParams // ------------- Optional query parameter "fields" ------------- @@ -686,7 +510,7 @@ func (siw *ServerInterfaceWrapper) GetTitlesTitleId(c *gin.Context) { } } - siw.Handler.GetTitlesTitleId(c, titleId, params) + siw.Handler.GetTitleTitleId(c, titleId, params) } // GetUsersUserId operation middleware @@ -724,73 +548,6 @@ func (siw *ServerInterfaceWrapper) GetUsersUserId(c *gin.Context) { siw.Handler.GetUsersUserId(c, userId, params) } -// GetUsersUserIdTitles operation middleware -func (siw *ServerInterfaceWrapper) GetUsersUserIdTitles(c *gin.Context) { - - var err error - - // ------------- Path parameter "user_id" ------------- - var userId string - - err = runtime.BindStyledParameterWithOptions("simple", "user_id", c.Param("user_id"), &userId, runtime.BindStyledParameterOptions{Explode: false, Required: true}) - if err != nil { - siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter user_id: %w", err), http.StatusBadRequest) - return - } - - // Parameter object where we will unmarshal all parameters from the context - var params GetUsersUserIdTitlesParams - - // ------------- Optional query parameter "cursor" ------------- - - err = runtime.BindQueryParameter("form", true, false, "cursor", c.Request.URL.Query(), ¶ms.Cursor) - if err != nil { - siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter cursor: %w", err), http.StatusBadRequest) - return - } - - // ------------- Optional query parameter "query" ------------- - - err = runtime.BindQueryParameter("form", true, false, "query", c.Request.URL.Query(), ¶ms.Query) - if err != nil { - siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter query: %w", err), http.StatusBadRequest) - return - } - - // ------------- Optional query parameter "limit" ------------- - - err = runtime.BindQueryParameter("form", true, false, "limit", c.Request.URL.Query(), ¶ms.Limit) - if err != nil { - siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter limit: %w", err), http.StatusBadRequest) - return - } - - // ------------- Optional query parameter "offset" ------------- - - err = runtime.BindQueryParameter("form", true, false, "offset", c.Request.URL.Query(), ¶ms.Offset) - if err != nil { - siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter offset: %w", err), http.StatusBadRequest) - return - } - - // ------------- Optional query parameter "fields" ------------- - - err = runtime.BindQueryParameter("form", true, false, "fields", c.Request.URL.Query(), ¶ms.Fields) - if err != nil { - siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter fields: %w", err), http.StatusBadRequest) - return - } - - for _, middleware := range siw.HandlerMiddlewares { - middleware(c) - if c.IsAborted() { - return - } - } - - siw.Handler.GetUsersUserIdTitles(c, userId, params) -} - // GinServerOptions provides options for the Gin server. type GinServerOptions struct { BaseURL string @@ -818,99 +575,98 @@ func RegisterHandlersWithOptions(router gin.IRouter, si ServerInterface, options ErrorHandler: errorHandler, } - router.GET(options.BaseURL+"/titles", wrapper.GetTitles) - router.GET(options.BaseURL+"/titles/:title_id", wrapper.GetTitlesTitleId) + router.GET(options.BaseURL+"/title", wrapper.GetTitle) + router.GET(options.BaseURL+"/title/:title_id", wrapper.GetTitleTitleId) router.GET(options.BaseURL+"/users/:user_id", wrapper.GetUsersUserId) - router.GET(options.BaseURL+"/users/:user_id/titles/", wrapper.GetUsersUserIdTitles) } -type GetTitlesRequestObject struct { - Params GetTitlesParams +type GetTitleRequestObject struct { + Params GetTitleParams } -type GetTitlesResponseObject interface { - VisitGetTitlesResponse(w http.ResponseWriter) error +type GetTitleResponseObject interface { + VisitGetTitleResponse(w http.ResponseWriter) error } -type GetTitles200JSONResponse []Title +type GetTitle200JSONResponse []Title -func (response GetTitles200JSONResponse) VisitGetTitlesResponse(w http.ResponseWriter) error { +func (response GetTitle200JSONResponse) VisitGetTitleResponse(w http.ResponseWriter) error { w.Header().Set("Content-Type", "application/json") w.WriteHeader(200) return json.NewEncoder(w).Encode(response) } -type GetTitles204Response struct { +type GetTitle204Response struct { } -func (response GetTitles204Response) VisitGetTitlesResponse(w http.ResponseWriter) error { +func (response GetTitle204Response) VisitGetTitleResponse(w http.ResponseWriter) error { w.WriteHeader(204) return nil } -type GetTitles400Response struct { +type GetTitle400Response struct { } -func (response GetTitles400Response) VisitGetTitlesResponse(w http.ResponseWriter) error { +func (response GetTitle400Response) VisitGetTitleResponse(w http.ResponseWriter) error { w.WriteHeader(400) return nil } -type GetTitles500Response struct { +type GetTitle500Response struct { } -func (response GetTitles500Response) VisitGetTitlesResponse(w http.ResponseWriter) error { +func (response GetTitle500Response) VisitGetTitleResponse(w http.ResponseWriter) error { w.WriteHeader(500) return nil } -type GetTitlesTitleIdRequestObject struct { +type GetTitleTitleIdRequestObject struct { TitleId int64 `json:"title_id"` - Params GetTitlesTitleIdParams + Params GetTitleTitleIdParams } -type GetTitlesTitleIdResponseObject interface { - VisitGetTitlesTitleIdResponse(w http.ResponseWriter) error +type GetTitleTitleIdResponseObject interface { + VisitGetTitleTitleIdResponse(w http.ResponseWriter) error } -type GetTitlesTitleId200JSONResponse Title +type GetTitleTitleId200JSONResponse Title -func (response GetTitlesTitleId200JSONResponse) VisitGetTitlesTitleIdResponse(w http.ResponseWriter) error { +func (response GetTitleTitleId200JSONResponse) VisitGetTitleTitleIdResponse(w http.ResponseWriter) error { w.Header().Set("Content-Type", "application/json") w.WriteHeader(200) return json.NewEncoder(w).Encode(response) } -type GetTitlesTitleId204Response struct { +type GetTitleTitleId204Response struct { } -func (response GetTitlesTitleId204Response) VisitGetTitlesTitleIdResponse(w http.ResponseWriter) error { +func (response GetTitleTitleId204Response) VisitGetTitleTitleIdResponse(w http.ResponseWriter) error { w.WriteHeader(204) return nil } -type GetTitlesTitleId400Response struct { +type GetTitleTitleId400Response struct { } -func (response GetTitlesTitleId400Response) VisitGetTitlesTitleIdResponse(w http.ResponseWriter) error { +func (response GetTitleTitleId400Response) VisitGetTitleTitleIdResponse(w http.ResponseWriter) error { w.WriteHeader(400) return nil } -type GetTitlesTitleId404Response struct { +type GetTitleTitleId404Response struct { } -func (response GetTitlesTitleId404Response) VisitGetTitlesTitleIdResponse(w http.ResponseWriter) error { +func (response GetTitleTitleId404Response) VisitGetTitleTitleIdResponse(w http.ResponseWriter) error { w.WriteHeader(404) return nil } -type GetTitlesTitleId500Response struct { +type GetTitleTitleId500Response struct { } -func (response GetTitlesTitleId500Response) VisitGetTitlesTitleIdResponse(w http.ResponseWriter) error { +func (response GetTitleTitleId500Response) VisitGetTitleTitleIdResponse(w http.ResponseWriter) error { w.WriteHeader(500) return nil } @@ -957,62 +713,17 @@ func (response GetUsersUserId500Response) VisitGetUsersUserIdResponse(w http.Res return nil } -type GetUsersUserIdTitlesRequestObject struct { - UserId string `json:"user_id"` - Params GetUsersUserIdTitlesParams -} - -type GetUsersUserIdTitlesResponseObject interface { - VisitGetUsersUserIdTitlesResponse(w http.ResponseWriter) error -} - -type GetUsersUserIdTitles200JSONResponse []UserTitle - -func (response GetUsersUserIdTitles200JSONResponse) VisitGetUsersUserIdTitlesResponse(w http.ResponseWriter) error { - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - - return json.NewEncoder(w).Encode(response) -} - -type GetUsersUserIdTitles204Response struct { -} - -func (response GetUsersUserIdTitles204Response) VisitGetUsersUserIdTitlesResponse(w http.ResponseWriter) error { - w.WriteHeader(204) - return nil -} - -type GetUsersUserIdTitles400Response struct { -} - -func (response GetUsersUserIdTitles400Response) VisitGetUsersUserIdTitlesResponse(w http.ResponseWriter) error { - w.WriteHeader(400) - return nil -} - -type GetUsersUserIdTitles500Response struct { -} - -func (response GetUsersUserIdTitles500Response) VisitGetUsersUserIdTitlesResponse(w http.ResponseWriter) error { - w.WriteHeader(500) - return nil -} - // StrictServerInterface represents all server handlers. type StrictServerInterface interface { // Get titles - // (GET /titles) - GetTitles(ctx context.Context, request GetTitlesRequestObject) (GetTitlesResponseObject, error) + // (GET /title) + GetTitle(ctx context.Context, request GetTitleRequestObject) (GetTitleResponseObject, error) // Get title description - // (GET /titles/{title_id}) - GetTitlesTitleId(ctx context.Context, request GetTitlesTitleIdRequestObject) (GetTitlesTitleIdResponseObject, error) + // (GET /title/{title_id}) + GetTitleTitleId(ctx context.Context, request GetTitleTitleIdRequestObject) (GetTitleTitleIdResponseObject, error) // Get user info // (GET /users/{user_id}) GetUsersUserId(ctx context.Context, request GetUsersUserIdRequestObject) (GetUsersUserIdResponseObject, error) - // Get user titles - // (GET /users/{user_id}/titles/) - GetUsersUserIdTitles(ctx context.Context, request GetUsersUserIdTitlesRequestObject) (GetUsersUserIdTitlesResponseObject, error) } type StrictHandlerFunc = strictgin.StrictGinHandlerFunc @@ -1027,17 +738,17 @@ type strictHandler struct { middlewares []StrictMiddlewareFunc } -// GetTitles operation middleware -func (sh *strictHandler) GetTitles(ctx *gin.Context, params GetTitlesParams) { - var request GetTitlesRequestObject +// GetTitle operation middleware +func (sh *strictHandler) GetTitle(ctx *gin.Context, params GetTitleParams) { + var request GetTitleRequestObject request.Params = params handler := func(ctx *gin.Context, request interface{}) (interface{}, error) { - return sh.ssi.GetTitles(ctx, request.(GetTitlesRequestObject)) + return sh.ssi.GetTitle(ctx, request.(GetTitleRequestObject)) } for _, middleware := range sh.middlewares { - handler = middleware(handler, "GetTitles") + handler = middleware(handler, "GetTitle") } response, err := handler(ctx, request) @@ -1045,8 +756,8 @@ func (sh *strictHandler) GetTitles(ctx *gin.Context, params GetTitlesParams) { if err != nil { ctx.Error(err) ctx.Status(http.StatusInternalServerError) - } else if validResponse, ok := response.(GetTitlesResponseObject); ok { - if err := validResponse.VisitGetTitlesResponse(ctx.Writer); err != nil { + } else if validResponse, ok := response.(GetTitleResponseObject); ok { + if err := validResponse.VisitGetTitleResponse(ctx.Writer); err != nil { ctx.Error(err) } } else if response != nil { @@ -1054,18 +765,18 @@ func (sh *strictHandler) GetTitles(ctx *gin.Context, params GetTitlesParams) { } } -// GetTitlesTitleId operation middleware -func (sh *strictHandler) GetTitlesTitleId(ctx *gin.Context, titleId int64, params GetTitlesTitleIdParams) { - var request GetTitlesTitleIdRequestObject +// GetTitleTitleId operation middleware +func (sh *strictHandler) GetTitleTitleId(ctx *gin.Context, titleId int64, params GetTitleTitleIdParams) { + var request GetTitleTitleIdRequestObject request.TitleId = titleId request.Params = params handler := func(ctx *gin.Context, request interface{}) (interface{}, error) { - return sh.ssi.GetTitlesTitleId(ctx, request.(GetTitlesTitleIdRequestObject)) + return sh.ssi.GetTitleTitleId(ctx, request.(GetTitleTitleIdRequestObject)) } for _, middleware := range sh.middlewares { - handler = middleware(handler, "GetTitlesTitleId") + handler = middleware(handler, "GetTitleTitleId") } response, err := handler(ctx, request) @@ -1073,8 +784,8 @@ func (sh *strictHandler) GetTitlesTitleId(ctx *gin.Context, titleId int64, param if err != nil { ctx.Error(err) ctx.Status(http.StatusInternalServerError) - } else if validResponse, ok := response.(GetTitlesTitleIdResponseObject); ok { - if err := validResponse.VisitGetTitlesTitleIdResponse(ctx.Writer); err != nil { + } else if validResponse, ok := response.(GetTitleTitleIdResponseObject); ok { + if err := validResponse.VisitGetTitleTitleIdResponse(ctx.Writer); err != nil { ctx.Error(err) } } else if response != nil { @@ -1109,31 +820,3 @@ func (sh *strictHandler) GetUsersUserId(ctx *gin.Context, userId string, params ctx.Error(fmt.Errorf("unexpected response type: %T", response)) } } - -// GetUsersUserIdTitles operation middleware -func (sh *strictHandler) GetUsersUserIdTitles(ctx *gin.Context, userId string, params GetUsersUserIdTitlesParams) { - var request GetUsersUserIdTitlesRequestObject - - request.UserId = userId - request.Params = params - - handler := func(ctx *gin.Context, request interface{}) (interface{}, error) { - return sh.ssi.GetUsersUserIdTitles(ctx, request.(GetUsersUserIdTitlesRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "GetUsersUserIdTitles") - } - - response, err := handler(ctx, request) - - if err != nil { - ctx.Error(err) - ctx.Status(http.StatusInternalServerError) - } else if validResponse, ok := response.(GetUsersUserIdTitlesResponseObject); ok { - if err := validResponse.VisitGetUsersUserIdTitlesResponse(ctx.Writer); err != nil { - ctx.Error(err) - } - } else if response != nil { - ctx.Error(fmt.Errorf("unexpected response type: %T", response)) - } -} diff --git a/api/openapi.yaml b/api/openapi.yaml index a33fe89..0bbedca 100644 --- a/api/openapi.yaml +++ b/api/openapi.yaml @@ -7,7 +7,7 @@ servers: - url: /api/v1 paths: - /titles: + /title: get: summary: Get titles parameters: @@ -66,7 +66,7 @@ paths: '500': description: Unknown server error - /titles/{title_id}: + /title/{title_id}: get: summary: Get title description parameters: @@ -126,7 +126,7 @@ paths: # user_json: # $ref: '#/components/schemas/User' -# /titles/{title_id}/reviews: +# /title/{title_id}/reviews: # get: # summary: Get title reviews # parameters: @@ -233,7 +233,7 @@ paths: # error: # type: string - # /users: + /users: # get: # summary: Search user # parameters: @@ -278,50 +278,45 @@ paths: # user_json: # $ref: '#/components/schemas/User' - /users/{user_id}/titles/: - get: - summary: Get user titles - parameters: - - $ref: '#/components/parameters/cursor' - - in: path - name: user_id - required: true - schema: - type: string - - in: query - name: query - schema: - type: string - - in: query - name: limit - schema: - type: integer - default: 10 - - in: query - name: offset - schema: - type: integer - default: 0 - - in: query - name: fields - schema: - type: string - default: all - responses: - '200': - description: List of user titles - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/UserTitle' - '204': - description: No titles found - '400': - description: Request params are not correct - '500': - description: Unknown server error +# /users/{user_id}/titles: +# get: +# summary: Get user titles +# parameters: +# - in: path +# name: user_id +# required: true +# schema: +# type: string +# - in: query +# name: query +# schema: +# type: string +# - in: query +# name: limit +# schema: +# type: integer +# default: 10 +# - in: query +# name: offset +# schema: +# type: integer +# default: 0 +# - in: query +# name: fields +# schema: +# type: string +# default: all +# responses: +# '200': +# description: List of user titles +# content: +# application/json: +# schema: +# type: array +# items: +# $ref: '#/components/schemas/UserTitle' +# '204': +# description: No titles found # post: # summary: Add user title @@ -576,14 +571,6 @@ paths: # type: string components: - parameters: - cursor: - in: query - name: cursor - required: false - schema: - type: string - schemas: Image: type: object @@ -782,7 +769,7 @@ components: type: integer format: int64 status: - $ref: '#/components/schemas/UserTitleStatus' + $ref: '#components/schemas/UserTitleStatus' rate: type: integer format: int32 diff --git a/modules/backend/handlers/titles.go b/modules/backend/handlers/titles.go index 46ff982..45f0ef0 100644 --- a/modules/backend/handlers/titles.go +++ b/modules/backend/handlers/titles.go @@ -25,11 +25,11 @@ func TitleStatus2Sqlc(s *oapi.TitleStatus) (*sqlc.TitleStatusT, error) { } var t sqlc.TitleStatusT switch *s { - case oapi.TitleStatusFinished: + case oapi.Finished: t = sqlc.TitleStatusTFinished - case oapi.TitleStatusOngoing: + case oapi.Ongoing: t = sqlc.TitleStatusTOngoing - case oapi.TitleStatusPlanned: + case oapi.Planned: t = sqlc.TitleStatusTPlanned default: return nil, fmt.Errorf("unexpected tittle status: %s", *s) @@ -195,40 +195,40 @@ func (s Server) mapTitle(ctx context.Context, title sqlc.Title) (oapi.Title, err return oapi_title, nil } -func (s Server) GetTitlesTitleId(ctx context.Context, request oapi.GetTitlesTitleIdRequestObject) (oapi.GetTitlesTitleIdResponseObject, error) { +func (s Server) GetTitleTitleId(ctx context.Context, request oapi.GetTitleTitleIdRequestObject) (oapi.GetTitleTitleIdResponseObject, error) { var oapi_title oapi.Title sqlc_title, err := s.db.GetTitleByID(ctx, request.TitleId) if err != nil { if err == pgx.ErrNoRows { - return oapi.GetTitlesTitleId204Response{}, nil + return oapi.GetTitleTitleId204Response{}, nil } log.Errorf("%v", err) - return oapi.GetTitlesTitleId500Response{}, nil + return oapi.GetTitleTitleId500Response{}, nil } oapi_title, err = s.mapTitle(ctx, sqlc_title) if err != nil { log.Errorf("%v", err) - return oapi.GetTitlesTitleId500Response{}, nil + return oapi.GetTitleTitleId500Response{}, nil } - return oapi.GetTitlesTitleId200JSONResponse(oapi_title), nil + return oapi.GetTitleTitleId200JSONResponse(oapi_title), nil } -func (s Server) GetTitles(ctx context.Context, request oapi.GetTitlesRequestObject) (oapi.GetTitlesResponseObject, error) { +func (s Server) GetTitle(ctx context.Context, request oapi.GetTitleRequestObject) (oapi.GetTitleResponseObject, error) { opai_titles := make([]oapi.Title, 0) word := Word2Sqlc(request.Params.Word) status, err := TitleStatus2Sqlc(request.Params.Status) if err != nil { log.Errorf("%v", err) - return oapi.GetTitles400Response{}, err + return oapi.GetTitle400Response{}, err } season, err := ReleaseSeason2sqlc(request.Params.ReleaseSeason) if err != nil { log.Errorf("%v", err) - return oapi.GetTitles400Response{}, err + return oapi.GetTitle400Response{}, err } // param = nil means it will not be used titles, err := s.db.SearchTitles(ctx, sqlc.SearchTitlesParams{ @@ -242,10 +242,10 @@ func (s Server) GetTitles(ctx context.Context, request oapi.GetTitlesRequestObje }) if err != nil { log.Errorf("%v", err) - return oapi.GetTitles500Response{}, nil + return oapi.GetTitle500Response{}, nil } if len(titles) == 0 { - return oapi.GetTitles204Response{}, nil + return oapi.GetTitle204Response{}, nil } for _, title := range titles { @@ -253,10 +253,10 @@ func (s Server) GetTitles(ctx context.Context, request oapi.GetTitlesRequestObje t, err := s.mapTitle(ctx, title) if err != nil { log.Errorf("%v", err) - return oapi.GetTitles500Response{}, nil + return oapi.GetTitle500Response{}, nil } opai_titles = append(opai_titles, t) } - return oapi.GetTitles200JSONResponse(opai_titles), nil + return oapi.GetTitle200JSONResponse(opai_titles), nil } diff --git a/modules/backend/handlers/users.go b/modules/backend/handlers/users.go index 0fa903f..9e59261 100644 --- a/modules/backend/handlers/users.go +++ b/modules/backend/handlers/users.go @@ -4,7 +4,6 @@ import ( "context" oapi "nyanimedb/api" sqlc "nyanimedb/sql" - "time" "github.com/jackc/pgx/v5" "github.com/oapi-codegen/runtime/types" @@ -49,35 +48,3 @@ func (s Server) GetUsersUserId(ctx context.Context, req oapi.GetUsersUserIdReque } return oapi.GetUsersUserId200JSONResponse(mapUser(user)), nil } - -func (s Server) GetUsersUserIdTitles(ctx context.Context, request oapi.GetUsersUserIdTitlesRequestObject) (oapi.GetUsersUserIdTitlesResponseObject, error) { - - var rate int32 = 9 - var review_id int64 = 3 - time := time.Date(2025, 1, 15, 10, 30, 0, 0, time.UTC) - - var userTitles = []oapi.UserTitle{ - { - UserId: 101, - TitleId: 2001, - Status: oapi.UserTitleStatusFinished, - Rate: &rate, - Ctime: &time, - }, - { - UserId: 102, - TitleId: 2002, - Status: oapi.UserTitleStatusInProgress, - ReviewId: &review_id, - Ctime: &time, - }, - { - UserId: 103, - TitleId: 2003, - Status: oapi.UserTitleStatusDropped, - Ctime: &time, - }, - } - - return oapi.GetUsersUserIdTitles200JSONResponse(userTitles), nil -} diff --git a/sql/migrations/000001_init.up.sql b/sql/migrations/000001_init.up.sql index 49cca3d..7b79300 100644 --- a/sql/migrations/000001_init.up.sql +++ b/sql/migrations/000001_init.up.sql @@ -86,7 +86,7 @@ CREATE TABLE usertitles ( title_id bigint NOT NULL REFERENCES titles (id), status usertitle_status_t NOT NULL, rate int CHECK (rate > 0 AND rate <= 10), - review_id bigint REFERENCES reviews (id), + review_id bigint NOT NULL REFERENCES reviews (id), ctime timestamptz -- // TODO: series status );