feat: delete usertitle implemented
All checks were successful
Build and Deploy Go App / build (push) Successful in 6m12s
Build and Deploy Go App / deploy (push) Successful in 25s

This commit is contained in:
Iron_Felix 2025-11-27 08:00:29 +03:00
parent 246fdc86b5
commit 451df61127
7 changed files with 160 additions and 492 deletions

View file

@ -112,8 +112,7 @@ type Title struct {
TitleNames map[string][]string `json:"title_names"`
// TitleStatus Title status
TitleStatus *TitleStatus `json:"title_status,omitempty"`
AdditionalProperties map[string]interface{} `json:"-"`
TitleStatus *TitleStatus `json:"title_status,omitempty"`
}
// TitleSort Title sort order
@ -191,13 +190,13 @@ type GetTitlesParams struct {
Fields *string `form:"fields,omitempty" json:"fields,omitempty"`
}
// GetTitlesTitleIdParams defines parameters for GetTitlesTitleId.
type GetTitlesTitleIdParams struct {
// GetTitleParams defines parameters for GetTitle.
type GetTitleParams struct {
Fields *string `form:"fields,omitempty" json:"fields,omitempty"`
}
// GetUsersUserIdParams defines parameters for GetUsersUserId.
type GetUsersUserIdParams struct {
// GetUsersIdParams defines parameters for GetUsersId.
type GetUsersIdParams struct {
Fields *string `form:"fields,omitempty" json:"fields,omitempty"`
}
@ -219,6 +218,11 @@ type UpdateUserJSONBody struct {
UserDesc *string `json:"user_desc,omitempty"`
}
// DeleteUserTitleParams defines parameters for DeleteUserTitle.
type DeleteUserTitleParams struct {
TitleId int64 `form:"title_id" json:"title_id"`
}
// GetUsersUserIdTitlesParams defines parameters for GetUsersUserIdTitles.
type GetUsersUserIdTitlesParams struct {
Cursor *Cursor `form:"cursor,omitempty" json:"cursor,omitempty"`
@ -264,248 +268,6 @@ type UpdateUserTitleJSONRequestBody UpdateUserTitleJSONBody
// AddUserTitleJSONRequestBody defines body for AddUserTitle for application/json ContentType.
type AddUserTitleJSONRequestBody AddUserTitleJSONBody
// 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) {
if a.AdditionalProperties != nil {
value, found = a.AdditionalProperties[fieldName]
}
return
}
// Setter for additional properties for Title
func (a *Title) Set(fieldName string, value interface{}) {
if a.AdditionalProperties == nil {
a.AdditionalProperties = make(map[string]interface{})
}
a.AdditionalProperties[fieldName] = value
}
// Override default JSON handling for Title to handle AdditionalProperties
func (a *Title) UnmarshalJSON(b []byte) error {
object := make(map[string]json.RawMessage)
err := json.Unmarshal(b, &object)
if err != nil {
return err
}
if raw, found := object["episodes_aired"]; found {
err = json.Unmarshal(raw, &a.EpisodesAired)
if err != nil {
return fmt.Errorf("error reading 'episodes_aired': %w", err)
}
delete(object, "episodes_aired")
}
if raw, found := object["episodes_all"]; found {
err = json.Unmarshal(raw, &a.EpisodesAll)
if err != nil {
return fmt.Errorf("error reading 'episodes_all': %w", err)
}
delete(object, "episodes_all")
}
if raw, found := object["episodes_len"]; found {
err = json.Unmarshal(raw, &a.EpisodesLen)
if err != nil {
return fmt.Errorf("error reading 'episodes_len': %w", err)
}
delete(object, "episodes_len")
}
if raw, found := object["id"]; found {
err = json.Unmarshal(raw, &a.Id)
if err != nil {
return fmt.Errorf("error reading 'id': %w", err)
}
delete(object, "id")
}
if raw, found := object["poster"]; found {
err = json.Unmarshal(raw, &a.Poster)
if err != nil {
return fmt.Errorf("error reading 'poster': %w", err)
}
delete(object, "poster")
}
if raw, found := object["rating"]; found {
err = json.Unmarshal(raw, &a.Rating)
if err != nil {
return fmt.Errorf("error reading 'rating': %w", err)
}
delete(object, "rating")
}
if raw, found := object["rating_count"]; found {
err = json.Unmarshal(raw, &a.RatingCount)
if err != nil {
return fmt.Errorf("error reading 'rating_count': %w", err)
}
delete(object, "rating_count")
}
if raw, found := object["release_season"]; found {
err = json.Unmarshal(raw, &a.ReleaseSeason)
if err != nil {
return fmt.Errorf("error reading 'release_season': %w", err)
}
delete(object, "release_season")
}
if raw, found := object["release_year"]; found {
err = json.Unmarshal(raw, &a.ReleaseYear)
if err != nil {
return fmt.Errorf("error reading 'release_year': %w", err)
}
delete(object, "release_year")
}
if raw, found := object["studio"]; found {
err = json.Unmarshal(raw, &a.Studio)
if err != nil {
return fmt.Errorf("error reading 'studio': %w", err)
}
delete(object, "studio")
}
if raw, found := object["tags"]; found {
err = json.Unmarshal(raw, &a.Tags)
if err != nil {
return fmt.Errorf("error reading 'tags': %w", err)
}
delete(object, "tags")
}
if raw, found := object["title_names"]; found {
err = json.Unmarshal(raw, &a.TitleNames)
if err != nil {
return fmt.Errorf("error reading 'title_names': %w", err)
}
delete(object, "title_names")
}
if raw, found := object["title_status"]; found {
err = json.Unmarshal(raw, &a.TitleStatus)
if err != nil {
return fmt.Errorf("error reading 'title_status': %w", err)
}
delete(object, "title_status")
}
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 Title to handle AdditionalProperties
func (a Title) MarshalJSON() ([]byte, error) {
var err error
object := make(map[string]json.RawMessage)
if a.EpisodesAired != nil {
object["episodes_aired"], err = json.Marshal(a.EpisodesAired)
if err != nil {
return nil, fmt.Errorf("error marshaling 'episodes_aired': %w", err)
}
}
if a.EpisodesAll != nil {
object["episodes_all"], err = json.Marshal(a.EpisodesAll)
if err != nil {
return nil, fmt.Errorf("error marshaling 'episodes_all': %w", err)
}
}
if a.EpisodesLen != nil {
object["episodes_len"], err = json.Marshal(a.EpisodesLen)
if err != nil {
return nil, fmt.Errorf("error marshaling 'episodes_len': %w", err)
}
}
object["id"], err = json.Marshal(a.Id)
if err != nil {
return nil, fmt.Errorf("error marshaling 'id': %w", err)
}
if a.Poster != nil {
object["poster"], err = json.Marshal(a.Poster)
if err != nil {
return nil, fmt.Errorf("error marshaling 'poster': %w", err)
}
}
if a.Rating != nil {
object["rating"], err = json.Marshal(a.Rating)
if err != nil {
return nil, fmt.Errorf("error marshaling 'rating': %w", err)
}
}
if a.RatingCount != nil {
object["rating_count"], err = json.Marshal(a.RatingCount)
if err != nil {
return nil, fmt.Errorf("error marshaling 'rating_count': %w", err)
}
}
if a.ReleaseSeason != nil {
object["release_season"], err = json.Marshal(a.ReleaseSeason)
if err != nil {
return nil, fmt.Errorf("error marshaling 'release_season': %w", err)
}
}
if a.ReleaseYear != nil {
object["release_year"], err = json.Marshal(a.ReleaseYear)
if err != nil {
return nil, fmt.Errorf("error marshaling 'release_year': %w", err)
}
}
if a.Studio != nil {
object["studio"], err = json.Marshal(a.Studio)
if err != nil {
return nil, fmt.Errorf("error marshaling 'studio': %w", err)
}
}
object["tags"], err = json.Marshal(a.Tags)
if err != nil {
return nil, fmt.Errorf("error marshaling 'tags': %w", err)
}
object["title_names"], err = json.Marshal(a.TitleNames)
if err != nil {
return nil, fmt.Errorf("error marshaling 'title_names': %w", err)
}
if a.TitleStatus != nil {
object["title_status"], err = json.Marshal(a.TitleStatus)
if err != nil {
return nil, fmt.Errorf("error marshaling 'title_status': %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
@ -513,16 +275,16 @@ type ServerInterface interface {
GetTitles(c *gin.Context, params GetTitlesParams)
// Get title description
// (GET /titles/{title_id})
GetTitlesTitleId(c *gin.Context, titleId int64, params GetTitlesTitleIdParams)
GetTitle(c *gin.Context, titleId int64, params GetTitleParams)
// Get user info
// (GET /users/{user_id})
GetUsersUserId(c *gin.Context, userId string, params GetUsersUserIdParams)
GetUsersId(c *gin.Context, userId string, params GetUsersIdParams)
// Partially update a user account
// (PATCH /users/{user_id})
UpdateUser(c *gin.Context, userId int64)
// Delete a usertitle
// (DELETE /users/{user_id}/titles)
DeleteUserTitle(c *gin.Context, userId int64)
DeleteUserTitle(c *gin.Context, userId int64, params DeleteUserTitleParams)
// Get user titles
// (GET /users/{user_id}/titles)
GetUsersUserIdTitles(c *gin.Context, userId string, params GetUsersUserIdTitlesParams)
@ -649,8 +411,8 @@ func (siw *ServerInterfaceWrapper) GetTitles(c *gin.Context) {
siw.Handler.GetTitles(c, params)
}
// GetTitlesTitleId operation middleware
func (siw *ServerInterfaceWrapper) GetTitlesTitleId(c *gin.Context) {
// GetTitle operation middleware
func (siw *ServerInterfaceWrapper) GetTitle(c *gin.Context) {
var err error
@ -664,7 +426,7 @@ func (siw *ServerInterfaceWrapper) GetTitlesTitleId(c *gin.Context) {
}
// Parameter object where we will unmarshal all parameters from the context
var params GetTitlesTitleIdParams
var params GetTitleParams
// ------------- Optional query parameter "fields" -------------
@ -681,11 +443,11 @@ func (siw *ServerInterfaceWrapper) GetTitlesTitleId(c *gin.Context) {
}
}
siw.Handler.GetTitlesTitleId(c, titleId, params)
siw.Handler.GetTitle(c, titleId, params)
}
// GetUsersUserId operation middleware
func (siw *ServerInterfaceWrapper) GetUsersUserId(c *gin.Context) {
// GetUsersId operation middleware
func (siw *ServerInterfaceWrapper) GetUsersId(c *gin.Context) {
var err error
@ -699,7 +461,7 @@ func (siw *ServerInterfaceWrapper) GetUsersUserId(c *gin.Context) {
}
// Parameter object where we will unmarshal all parameters from the context
var params GetUsersUserIdParams
var params GetUsersIdParams
// ------------- Optional query parameter "fields" -------------
@ -716,7 +478,7 @@ func (siw *ServerInterfaceWrapper) GetUsersUserId(c *gin.Context) {
}
}
siw.Handler.GetUsersUserId(c, userId, params)
siw.Handler.GetUsersId(c, userId, params)
}
// UpdateUser operation middleware
@ -757,6 +519,24 @@ func (siw *ServerInterfaceWrapper) DeleteUserTitle(c *gin.Context) {
return
}
// Parameter object where we will unmarshal all parameters from the context
var params DeleteUserTitleParams
// ------------- Required query parameter "title_id" -------------
if paramValue := c.Query("title_id"); paramValue != "" {
} else {
siw.ErrorHandler(c, fmt.Errorf("Query argument title_id is required, but not found"), http.StatusBadRequest)
return
}
err = runtime.BindQueryParameter("form", true, true, "title_id", c.Request.URL.Query(), &params.TitleId)
if err != nil {
siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter title_id: %w", err), http.StatusBadRequest)
return
}
for _, middleware := range siw.HandlerMiddlewares {
middleware(c)
if c.IsAborted() {
@ -764,7 +544,7 @@ func (siw *ServerInterfaceWrapper) DeleteUserTitle(c *gin.Context) {
}
}
siw.Handler.DeleteUserTitle(c, userId)
siw.Handler.DeleteUserTitle(c, userId, params)
}
// GetUsersUserIdTitles operation middleware
@ -966,8 +746,8 @@ func RegisterHandlersWithOptions(router gin.IRouter, si ServerInterface, options
}
router.GET(options.BaseURL+"/titles", wrapper.GetTitles)
router.GET(options.BaseURL+"/titles/:title_id", wrapper.GetTitlesTitleId)
router.GET(options.BaseURL+"/users/:user_id", wrapper.GetUsersUserId)
router.GET(options.BaseURL+"/titles/:title_id", wrapper.GetTitle)
router.GET(options.BaseURL+"/users/:user_id", wrapper.GetUsersId)
router.PATCH(options.BaseURL+"/users/:user_id", wrapper.UpdateUser)
router.DELETE(options.BaseURL+"/users/:user_id/titles", wrapper.DeleteUserTitle)
router.GET(options.BaseURL+"/users/:user_id/titles", wrapper.GetUsersUserIdTitles)
@ -1021,94 +801,94 @@ func (response GetTitles500Response) VisitGetTitlesResponse(w http.ResponseWrite
return nil
}
type GetTitlesTitleIdRequestObject struct {
type GetTitleRequestObject struct {
TitleId int64 `json:"title_id"`
Params GetTitlesTitleIdParams
Params GetTitleParams
}
type GetTitlesTitleIdResponseObject interface {
VisitGetTitlesTitleIdResponse(w http.ResponseWriter) error
type GetTitleResponseObject interface {
VisitGetTitleResponse(w http.ResponseWriter) error
}
type GetTitlesTitleId200JSONResponse Title
type GetTitle200JSONResponse Title
func (response GetTitlesTitleId200JSONResponse) VisitGetTitlesTitleIdResponse(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 GetTitlesTitleId204Response struct {
type GetTitle204Response struct {
}
func (response GetTitlesTitleId204Response) VisitGetTitlesTitleIdResponse(w http.ResponseWriter) error {
func (response GetTitle204Response) VisitGetTitleResponse(w http.ResponseWriter) error {
w.WriteHeader(204)
return nil
}
type GetTitlesTitleId400Response struct {
type GetTitle400Response struct {
}
func (response GetTitlesTitleId400Response) VisitGetTitlesTitleIdResponse(w http.ResponseWriter) error {
func (response GetTitle400Response) VisitGetTitleResponse(w http.ResponseWriter) error {
w.WriteHeader(400)
return nil
}
type GetTitlesTitleId404Response struct {
type GetTitle404Response struct {
}
func (response GetTitlesTitleId404Response) VisitGetTitlesTitleIdResponse(w http.ResponseWriter) error {
func (response GetTitle404Response) VisitGetTitleResponse(w http.ResponseWriter) error {
w.WriteHeader(404)
return nil
}
type GetTitlesTitleId500Response struct {
type GetTitle500Response struct {
}
func (response GetTitlesTitleId500Response) VisitGetTitlesTitleIdResponse(w http.ResponseWriter) error {
func (response GetTitle500Response) VisitGetTitleResponse(w http.ResponseWriter) error {
w.WriteHeader(500)
return nil
}
type GetUsersUserIdRequestObject struct {
type GetUsersIdRequestObject struct {
UserId string `json:"user_id"`
Params GetUsersUserIdParams
Params GetUsersIdParams
}
type GetUsersUserIdResponseObject interface {
VisitGetUsersUserIdResponse(w http.ResponseWriter) error
type GetUsersIdResponseObject interface {
VisitGetUsersIdResponse(w http.ResponseWriter) error
}
type GetUsersUserId200JSONResponse User
type GetUsersId200JSONResponse User
func (response GetUsersUserId200JSONResponse) VisitGetUsersUserIdResponse(w http.ResponseWriter) error {
func (response GetUsersId200JSONResponse) VisitGetUsersIdResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(200)
return json.NewEncoder(w).Encode(response)
}
type GetUsersUserId400Response struct {
type GetUsersId400Response struct {
}
func (response GetUsersUserId400Response) VisitGetUsersUserIdResponse(w http.ResponseWriter) error {
func (response GetUsersId400Response) VisitGetUsersIdResponse(w http.ResponseWriter) error {
w.WriteHeader(400)
return nil
}
type GetUsersUserId404Response struct {
type GetUsersId404Response struct {
}
func (response GetUsersUserId404Response) VisitGetUsersUserIdResponse(w http.ResponseWriter) error {
func (response GetUsersId404Response) VisitGetUsersIdResponse(w http.ResponseWriter) error {
w.WriteHeader(404)
return nil
}
type GetUsersUserId500Response struct {
type GetUsersId500Response struct {
}
func (response GetUsersUserId500Response) VisitGetUsersUserIdResponse(w http.ResponseWriter) error {
func (response GetUsersId500Response) VisitGetUsersIdResponse(w http.ResponseWriter) error {
w.WriteHeader(500)
return nil
}
@ -1189,6 +969,7 @@ func (response UpdateUser500Response) VisitUpdateUserResponse(w http.ResponseWri
type DeleteUserTitleRequestObject struct {
UserId int64 `json:"user_id"`
Params DeleteUserTitleParams
}
type DeleteUserTitleResponseObject interface {
@ -1419,10 +1200,10 @@ type StrictServerInterface interface {
GetTitles(ctx context.Context, request GetTitlesRequestObject) (GetTitlesResponseObject, error)
// Get title description
// (GET /titles/{title_id})
GetTitlesTitleId(ctx context.Context, request GetTitlesTitleIdRequestObject) (GetTitlesTitleIdResponseObject, error)
GetTitle(ctx context.Context, request GetTitleRequestObject) (GetTitleResponseObject, error)
// Get user info
// (GET /users/{user_id})
GetUsersUserId(ctx context.Context, request GetUsersUserIdRequestObject) (GetUsersUserIdResponseObject, error)
GetUsersId(ctx context.Context, request GetUsersIdRequestObject) (GetUsersIdResponseObject, error)
// Partially update a user account
// (PATCH /users/{user_id})
UpdateUser(ctx context.Context, request UpdateUserRequestObject) (UpdateUserResponseObject, error)
@ -1479,18 +1260,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
// GetTitle operation middleware
func (sh *strictHandler) GetTitle(ctx *gin.Context, titleId int64, params GetTitleParams) {
var request GetTitleRequestObject
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.GetTitle(ctx, request.(GetTitleRequestObject))
}
for _, middleware := range sh.middlewares {
handler = middleware(handler, "GetTitlesTitleId")
handler = middleware(handler, "GetTitle")
}
response, err := handler(ctx, request)
@ -1498,8 +1279,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.(GetTitleResponseObject); ok {
if err := validResponse.VisitGetTitleResponse(ctx.Writer); err != nil {
ctx.Error(err)
}
} else if response != nil {
@ -1507,18 +1288,18 @@ func (sh *strictHandler) GetTitlesTitleId(ctx *gin.Context, titleId int64, param
}
}
// GetUsersUserId operation middleware
func (sh *strictHandler) GetUsersUserId(ctx *gin.Context, userId string, params GetUsersUserIdParams) {
var request GetUsersUserIdRequestObject
// GetUsersId operation middleware
func (sh *strictHandler) GetUsersId(ctx *gin.Context, userId string, params GetUsersIdParams) {
var request GetUsersIdRequestObject
request.UserId = userId
request.Params = params
handler := func(ctx *gin.Context, request interface{}) (interface{}, error) {
return sh.ssi.GetUsersUserId(ctx, request.(GetUsersUserIdRequestObject))
return sh.ssi.GetUsersId(ctx, request.(GetUsersIdRequestObject))
}
for _, middleware := range sh.middlewares {
handler = middleware(handler, "GetUsersUserId")
handler = middleware(handler, "GetUsersId")
}
response, err := handler(ctx, request)
@ -1526,8 +1307,8 @@ func (sh *strictHandler) GetUsersUserId(ctx *gin.Context, userId string, params
if err != nil {
ctx.Error(err)
ctx.Status(http.StatusInternalServerError)
} else if validResponse, ok := response.(GetUsersUserIdResponseObject); ok {
if err := validResponse.VisitGetUsersUserIdResponse(ctx.Writer); err != nil {
} else if validResponse, ok := response.(GetUsersIdResponseObject); ok {
if err := validResponse.VisitGetUsersIdResponse(ctx.Writer); err != nil {
ctx.Error(err)
}
} else if response != nil {
@ -1571,10 +1352,11 @@ func (sh *strictHandler) UpdateUser(ctx *gin.Context, userId int64) {
}
// DeleteUserTitle operation middleware
func (sh *strictHandler) DeleteUserTitle(ctx *gin.Context, userId int64) {
func (sh *strictHandler) DeleteUserTitle(ctx *gin.Context, userId int64, params DeleteUserTitleParams) {
var request DeleteUserTitleRequestObject
request.UserId = userId
request.Params = params
handler := func(ctx *gin.Context, request interface{}) (interface{}, error) {
return sh.ssi.DeleteUserTitle(ctx, request.(DeleteUserTitleRequestObject))