51 lines
1.1 KiB
Go
51 lines
1.1 KiB
Go
package handlers
|
|
|
|
import (
|
|
"context"
|
|
oapi "nyanimedb/api"
|
|
sqlc "nyanimedb/sql"
|
|
"strconv"
|
|
|
|
"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
|
|
}
|