package logic

import (
	"context"
	"gitea.youtukeji.com.cn/youtu/youtu_grpc/app/user_service/internal/gen/dao/model"
	"gitea.youtukeji.com.cn/youtu/youtu_grpc/app/user_service/internal/svc"
	"gitea.youtukeji.com.cn/youtu/youtu_grpc/app/user_service/user"

	"github.com/zeromicro/go-zero/core/logx"
)

type CreateUserLogic struct {
	ctx    context.Context
	svcCtx *svc.ServiceContext
	logx.Logger
}

func NewCreateUserLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CreateUserLogic {
	return &CreateUserLogic{
		ctx:    ctx,
		svcCtx: svcCtx,
		Logger: logx.WithContext(ctx),
	}
}

// CreateUser 创建用户
func (l *CreateUserLogic) CreateUser(in *user.CreateUserRequest) (res *user.UserId, err error) {
	userQ := l.svcCtx.Query.User
	userModel := model.User{
		Nickname: in.Nickname,
		Avatar:   in.Avatar,
	}
	userModel.ID, err = l.svcCtx.IDGen.NextID()
	if err != nil {
		return nil, err
	}

	err = userQ.WithContext(l.ctx).Create(&userModel)
	if err != nil {
		return nil, err
	}
	return &user.UserId{UserId: userModel.ID}, nil
}