Files
juwan-backend/app/game/rpc/internal/logic/getGamesByIdLogic.go
2026-02-28 05:33:16 +08:00

47 lines
1.2 KiB
Go

package logic
import (
"context"
"errors"
"juwan-backend/app/game/rpc/internal/models/games"
"juwan-backend/app/game/rpc/internal/svc"
"juwan-backend/app/game/rpc/pb"
"github.com/jinzhu/copier"
"github.com/zeromicro/go-zero/core/logx"
)
type GetGamesByIdLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewGetGamesByIdLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetGamesByIdLogic {
return &GetGamesByIdLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
func (l *GetGamesByIdLogic) GetGamesById(in *pb.GetGamesByIdReq) (*pb.GetGamesByIdResp, error) {
game, err := l.svcCtx.GameModelRO.Games.Query().Where(games.IDEQ(in.Id)).First(l.ctx)
if err != nil {
logx.WithContext(l.ctx).Errorf("GetGamesByIdLogic err: %v", err)
return nil, errors.New("get games by id failed")
}
pbGame := pb.Games{}
err = copier.Copy(&pbGame, &game)
if err != nil {
logx.WithContext(l.ctx).Errorf("GetGamesByIdLogic copier err: %v", err)
return nil, errors.New("get games by id failed")
}
pbGame.CreatedAt = game.CreatedAt.Unix()
pbGame.UpdatedAt = game.UpdatedAt.Unix()
return &pb.GetGamesByIdResp{
Games: &pbGame,
}, nil
}