From a25a912ead2e5ff2b81edd67191afe3ec3ce4b13 Mon Sep 17 00:00:00 2001 From: Iron_Felix Date: Thu, 27 Nov 2025 08:16:12 +0300 Subject: [PATCH] feat: Update UserTitle implemented --- modules/backend/handlers/users.go | 49 ++++++++++++++++++++++++------- sql/queries.sql.go | 8 ++--- sql/sqlc.yaml | 5 ++++ 3 files changed, 47 insertions(+), 15 deletions(-) diff --git a/modules/backend/handlers/users.go b/modules/backend/handlers/users.go index 48f80d8..563a244 100644 --- a/modules/backend/handlers/users.go +++ b/modules/backend/handlers/users.go @@ -386,16 +386,7 @@ func (s Server) AddUserTitle(ctx context.Context, request oapi.AddUserTitleReque log.Errorf("%v", err) return oapi.AddUserTitle500Response{}, nil } - oapi_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 oapi.UserTitleStatus `json:"status"` - TitleId int64 `json:"title_id"` - UserId int64 `json:"user_id"` - }{ + oapi_usertitle := oapi.UserTitleMini{ Ctime: &user_title.Ctime, Rate: user_title.Rate, ReviewId: user_title.ReviewID, @@ -426,5 +417,41 @@ func (s Server) DeleteUserTitle(ctx context.Context, request oapi.DeleteUserTitl // UpdateUserTitle implements oapi.StrictServerInterface. func (s Server) UpdateUserTitle(ctx context.Context, request oapi.UpdateUserTitleRequestObject) (oapi.UpdateUserTitleResponseObject, error) { - panic("unimplemented") + + status, err := UserTitleStatus2Sqlc1(request.Body.Status) + if err != nil { + log.Errorf("%v", err) + return oapi.UpdateUserTitle400Response{}, nil + } + params := sqlc.UpdateUserTitleParams{ + Status: status, + Rate: request.Body.Rate, + UserID: request.UserId, + TitleID: request.Body.TitleId, + } + + user_title, err := s.db.UpdateUserTitle(ctx, params) + if err != nil { + if err == pgx.ErrNoRows { + return oapi.UpdateUserTitle404Response{}, nil + } + log.Errorf("%v", err) + return oapi.UpdateUserTitle500Response{}, nil + } + oapi_status, err := sql2usertitlestatus(user_title.Status) + if err != nil { + log.Errorf("%v", err) + return oapi.UpdateUserTitle500Response{}, nil + } + + oapi_usertitle := oapi.UserTitleMini{ + Ctime: &user_title.Ctime, + Rate: user_title.Rate, + ReviewId: user_title.ReviewID, + Status: oapi_status, + TitleId: user_title.TitleID, + UserId: user_title.UserID, + } + + return oapi.UpdateUserTitle200JSONResponse(oapi_usertitle), nil } diff --git a/sql/queries.sql.go b/sql/queries.sql.go index 24f77b4..9338717 100644 --- a/sql/queries.sql.go +++ b/sql/queries.sql.go @@ -874,10 +874,10 @@ RETURNING user_id, title_id, status, rate, review_id, ctime ` type UpdateUserTitleParams struct { - Status NullUsertitleStatusT `json:"status"` - Rate *int32 `json:"rate"` - UserID int64 `json:"user_id"` - TitleID int64 `json:"title_id"` + Status *UsertitleStatusT `json:"status"` + Rate *int32 `json:"rate"` + UserID int64 `json:"user_id"` + TitleID int64 `json:"title_id"` } // Fails with sql.ErrNoRows if (user_id, title_id) not found diff --git a/sql/sqlc.yaml b/sql/sqlc.yaml index de67bcf..8f8626a 100644 --- a/sql/sqlc.yaml +++ b/sql/sqlc.yaml @@ -14,6 +14,11 @@ sql: emit_pointers_for_null_types: true emit_empty_slices: true #slices returned by :many queries will be empty instead of nil overrides: + - db_type: "usertitle_status_t" + nullable: true + go_type: + type: "UsertitleStatusT" + pointer: true - db_type: "storage_type_t" nullable: true go_type: