Hermes/cmd/backend/server/handlers/user_create.go

47 lines
1.0 KiB
Go

package handlers
import (
"backend/internal/core/services"
httpserver "backend/internal/http_server"
"backend/pkg/logger"
"context"
"github.com/gin-gonic/gin"
)
type createUserInput struct {
Email string `json:"email" binding:"required,email"`
Password string `json:"password" binding:"required"`
Name string `json:"name" binding:"required"`
}
type createUserOutput struct {
Id string `json:"id"`
Email string `json:"email"`
FullName string `json:"fullName"`
}
func NewUserCreateHandler(log logger.Logger, userService services.UserService) gin.HandlerFunc {
return httpserver.WrapGin(log,
func(ctx context.Context, input createUserInput) (createUserOutput, error) {
user, err := userService.CreateUser(ctx,
services.UserCreateParams{
Email: input.Email,
Password: input.Password,
Name: input.Name,
},
)
if err != nil {
return createUserOutput{}, err
}
return createUserOutput{
Id: user.Id,
Email: user.Email,
FullName: user.FullName,
}, nil
},
)
}