feat: AddUserTitle implemented
This commit is contained in:
parent
15a681c622
commit
76df4d8592
10 changed files with 749 additions and 39 deletions
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue