package services import ( "strings" "dove/enums" "dove/messages" "dove/models" "dove/repositories" "dove/types" "dove/utils/meta" "dove/utils/shortcuts" ) func ListUsers(pagination meta.Pagination, sorting meta.Sorting, search string) types.PaginatedResponse { users, total := repositories.ListUsers(pagination, sorting, search) return pagination.Response(users, total) } func CreateUser(request types.CreateUserRequest) *types.ServiceError { username := strings.TrimSpace(request.Username) displayName := strings.TrimSpace(request.DisplayName) if username == "" { return shortcuts.ServiceError(enums.BadRequest, messages.UserUsernameRequired) } if displayName == "" { return shortcuts.ServiceError(enums.BadRequest, messages.UserDisplayNameRequired) } if repositories.FindUserByUsername(username) != nil { return shortcuts.ServiceError(enums.Unprocessable, messages.UserAlreadyExists) } user := &models.User{ Username: username, DisplayName: displayName, } if createError := repositories.CreateUser(user); createError != nil { return shortcuts.ServiceError(enums.Internal, messages.UserCreationFailed) } return nil } func AllUsers() []models.User { return repositories.AllUsers() }