implement graphQL and init postgres
This commit is contained in:
@@ -4,6 +4,7 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"omega-server/local/middleware"
|
||||
"omega-server/local/model"
|
||||
"omega-server/local/service"
|
||||
"omega-server/local/utl/common"
|
||||
"omega-server/local/utl/error_handler"
|
||||
@@ -52,7 +53,7 @@ func NewMembershipController(service *service.MembershipService, auth *middlewar
|
||||
// Login handles user login.
|
||||
func (c *MembershipController) Login(ctx *fiber.Ctx) error {
|
||||
type request struct {
|
||||
Username string `json:"username"`
|
||||
Email string `json:"email"`
|
||||
Password string `json:"password"`
|
||||
}
|
||||
|
||||
@@ -62,7 +63,7 @@ func (c *MembershipController) Login(ctx *fiber.Ctx) error {
|
||||
}
|
||||
|
||||
logging.Debug("Login request received")
|
||||
token, err := c.service.Login(ctx.UserContext(), req.Username, req.Password)
|
||||
token, err := c.service.Login(ctx.UserContext(), req.Email, req.Password)
|
||||
if err != nil {
|
||||
return c.errorHandler.HandleAuthError(ctx, err)
|
||||
}
|
||||
@@ -72,23 +73,35 @@ func (c *MembershipController) Login(ctx *fiber.Ctx) error {
|
||||
|
||||
// CreateUser creates a new user.
|
||||
func (mc *MembershipController) CreateUser(c *fiber.Ctx) error {
|
||||
type request struct {
|
||||
Username string `json:"username"`
|
||||
Password string `json:"password"`
|
||||
Role string `json:"role"`
|
||||
}
|
||||
|
||||
var req request
|
||||
var req model.UserCreateRequest
|
||||
if err := c.BodyParser(&req); err != nil {
|
||||
return mc.errorHandler.HandleParsingError(c, err)
|
||||
}
|
||||
|
||||
user, err := mc.service.CreateUser(c.UserContext(), req.Username, req.Password, req.Role)
|
||||
// Validate request
|
||||
if err := req.Validate(); err != nil {
|
||||
return mc.errorHandler.HandleValidationError(c, err, "user_create_request")
|
||||
}
|
||||
|
||||
// Map to domain model
|
||||
user, err := req.ToUser()
|
||||
if err != nil {
|
||||
return mc.errorHandler.HandleValidationError(c, err, "user_mapping")
|
||||
}
|
||||
|
||||
// Extract role names from request
|
||||
roleIDs := req.RoleIDs
|
||||
if len(roleIDs) == 0 {
|
||||
roleIDs = []string{"user"} // default role
|
||||
}
|
||||
|
||||
// Call service with domain model
|
||||
createdUser, err := mc.service.CreateUser(c.UserContext(), user, roleIDs)
|
||||
if err != nil {
|
||||
return mc.errorHandler.HandleServiceError(c, err)
|
||||
}
|
||||
|
||||
return c.JSON(user)
|
||||
return c.JSON(createdUser.ToResponse())
|
||||
}
|
||||
|
||||
// ListUsers lists all users.
|
||||
@@ -98,7 +111,13 @@ func (mc *MembershipController) ListUsers(c *fiber.Ctx) error {
|
||||
return mc.errorHandler.HandleServiceError(c, err)
|
||||
}
|
||||
|
||||
return c.JSON(users)
|
||||
// Convert to response format
|
||||
userResponses := make([]*model.UserResponse, len(users))
|
||||
for i, user := range users {
|
||||
userResponses[i] = user.ToResponse()
|
||||
}
|
||||
|
||||
return c.JSON(userResponses)
|
||||
}
|
||||
|
||||
// GetUser gets a single user by ID.
|
||||
@@ -113,7 +132,7 @@ func (mc *MembershipController) GetUser(c *fiber.Ctx) error {
|
||||
return mc.errorHandler.HandleNotFoundError(c, "User")
|
||||
}
|
||||
|
||||
return c.JSON(user)
|
||||
return c.JSON(user.ToResponse())
|
||||
}
|
||||
|
||||
// GetMe returns the currently authenticated user's details.
|
||||
@@ -128,10 +147,7 @@ func (mc *MembershipController) GetMe(c *fiber.Ctx) error {
|
||||
return mc.errorHandler.HandleNotFoundError(c, "User")
|
||||
}
|
||||
|
||||
// Sanitize the user object to not expose password
|
||||
user.PasswordHash = ""
|
||||
|
||||
return c.JSON(user)
|
||||
return c.JSON(user.ToResponse())
|
||||
}
|
||||
|
||||
// DeleteUser deletes a user.
|
||||
@@ -156,17 +172,22 @@ func (mc *MembershipController) UpdateUser(c *fiber.Ctx) error {
|
||||
return mc.errorHandler.HandleUUIDError(c, "user ID")
|
||||
}
|
||||
|
||||
var req service.UpdateUserRequest
|
||||
var req model.UserUpdateRequest
|
||||
if err := c.BodyParser(&req); err != nil {
|
||||
return mc.errorHandler.HandleParsingError(c, err)
|
||||
}
|
||||
|
||||
user, err := mc.service.UpdateUser(c.UserContext(), id, req)
|
||||
// Validate request
|
||||
if err := req.Validate(); err != nil {
|
||||
return mc.errorHandler.HandleValidationError(c, err, "user_update_request")
|
||||
}
|
||||
|
||||
user, err := mc.service.UpdateUser(c.UserContext(), id, &req)
|
||||
if err != nil {
|
||||
return mc.errorHandler.HandleServiceError(c, err)
|
||||
}
|
||||
|
||||
return c.JSON(user)
|
||||
return c.JSON(user.ToResponse())
|
||||
}
|
||||
|
||||
// GetRoles returns all available roles.
|
||||
|
||||
Reference in New Issue
Block a user