83 lines
1.9 KiB
Go
83 lines
1.9 KiB
Go
package handlers
|
|
|
|
import (
|
|
"context"
|
|
oapi "nyanimedb/api"
|
|
sqlc "nyanimedb/sql"
|
|
"time"
|
|
|
|
"github.com/jackc/pgx/v5"
|
|
"github.com/oapi-codegen/runtime/types"
|
|
)
|
|
|
|
// type Server struct {
|
|
// db *sqlc.Queries
|
|
// }
|
|
|
|
// func NewServer(db *sqlc.Queries) Server {
|
|
// return Server{db: db}
|
|
// }
|
|
|
|
// func parseInt64(s string) (int32, error) {
|
|
// i, err := strconv.ParseInt(s, 10, 64)
|
|
// return int32(i), err
|
|
// }
|
|
|
|
func mapUser(u sqlc.GetUserByIDRow) oapi.User {
|
|
return oapi.User{
|
|
AvatarId: u.AvatarID,
|
|
CreationDate: &u.CreationDate,
|
|
DispName: u.DispName,
|
|
Id: &u.ID,
|
|
Mail: (*types.Email)(u.Mail),
|
|
Nickname: u.Nickname,
|
|
UserDesc: u.UserDesc,
|
|
}
|
|
}
|
|
|
|
func (s Server) GetUsersUserId(ctx context.Context, req oapi.GetUsersUserIdRequestObject) (oapi.GetUsersUserIdResponseObject, error) {
|
|
userID, err := parseInt64(req.UserId)
|
|
if err != nil {
|
|
return oapi.GetUsersUserId404Response{}, nil
|
|
}
|
|
user, err := s.db.GetUserByID(context.TODO(), int64(userID))
|
|
if err != nil {
|
|
if err == pgx.ErrNoRows {
|
|
return oapi.GetUsersUserId404Response{}, nil
|
|
}
|
|
return nil, err
|
|
}
|
|
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
|
|
}
|