feat: AddUserTitle implemented
All checks were successful
Build and Deploy Go App / build (push) Successful in 5m23s
Build and Deploy Go App / deploy (push) Successful in 28s

This commit is contained in:
Iron_Felix 2025-11-24 09:34:05 +03:00
parent 15a681c622
commit 76df4d8592
10 changed files with 749 additions and 39 deletions

View file

@ -125,10 +125,32 @@ func UserTitleStatus2Sqlc(s *[]oapi.UserTitleStatus) ([]sqlc.UsertitleStatusT, e
return sqlc_status, nil
}
func UserTitleStatus2Sqlc1(s *oapi.UserTitleStatus) (*sqlc.UsertitleStatusT, error) {
var sqlc_status sqlc.UsertitleStatusT
if s == nil {
return nil, nil
}
switch *s {
case oapi.UserTitleStatusFinished:
sqlc_status = sqlc.UsertitleStatusTFinished
case oapi.UserTitleStatusInProgress:
sqlc_status = sqlc.UsertitleStatusTInProgress
case oapi.UserTitleStatusDropped:
sqlc_status = sqlc.UsertitleStatusTDropped
case oapi.UserTitleStatusPlanned:
sqlc_status = sqlc.UsertitleStatusTPlanned
default:
return nil, fmt.Errorf("unexpected tittle status: %s", s)
}
return &sqlc_status, nil
}
func (s Server) mapUsertitle(ctx context.Context, t sqlc.SearchUserTitlesRow) (oapi.UserTitle, error) {
oapi_usertitle := oapi.UserTitle{
Ctime: sqlDate2oapi(t.UserCtime),
Ctime: &t.UserCtime,
Rate: t.UserRate,
ReviewId: t.ReviewID,
// Status: ,
@ -316,3 +338,51 @@ func (s Server) UpdateUser(ctx context.Context, request oapi.UpdateUserRequestOb
return oapi.UpdateUser200JSONResponse(oapi_user), nil
}
func (s Server) AddUserTitle(ctx context.Context, request oapi.AddUserTitleRequestObject) (oapi.AddUserTitleResponseObject, error) {
status, err := UserTitleStatus2Sqlc1(&request.Body.Status)
if err != nil {
log.Errorf("%v", err)
return oapi.AddUserTitle400Response{}, nil
}
params := sqlc.InsertUserTitleParams{
UserID: request.UserId,
TitleID: request.Body.Title.Id,
Status: *status,
Rate: request.Body.Rate,
ReviewID: request.Body.ReviewId,
}
user_title, err := s.db.InsertUserTitle(ctx, params)
if err != nil {
log.Errorf("%v", err)
return oapi.AddUserTitle500Response{}, nil
}
oapi_status, err := sql2usertitlestatus(user_title.Status)
if err != nil {
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"`
}{
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.AddUserTitle200JSONResponse{Data: &oapi_usertitle}, nil
}

View file

@ -412,7 +412,7 @@ WHERE review_id = sqlc.arg('review_id')::bigint;
-- DELETE FROM reviews
-- WHERE review_id = $1;
-- name: ListReviewsByTitle :many
-- -- name: ListReviewsByTitle :many
-- SELECT review_id, user_id, title_id, image_ids, review_text, creation_date
-- FROM reviews
-- WHERE title_id = $1
@ -438,10 +438,16 @@ WHERE review_id = sqlc.arg('review_id')::bigint;
-- ORDER BY usertitle_id
-- LIMIT $2 OFFSET $3;
-- -- name: CreateUserTitle :one
-- INSERT INTO usertitles (user_id, title_id, status, rate, review_id)
-- VALUES ($1, $2, $3, $4, $5)
-- RETURNING usertitle_id, user_id, title_id, status, rate, review_id;
-- name: InsertUserTitle :one
INSERT INTO usertitles (user_id, title_id, status, rate, review_id)
VALUES (
sqlc.arg('user_id')::bigint,
sqlc.arg('title_id')::bigint,
sqlc.arg('status')::usertitle_status_t,
sqlc.narg('rate')::int,
sqlc.narg('review_id')::bigint
)
RETURNING user_id, title_id, status, rate, review_id, ctime;
-- -- name: UpdateUserTitle :one
-- UPDATE usertitles