diff options
Diffstat (limited to 'services/user.go')
| -rw-r--r-- | services/user.go | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/services/user.go b/services/user.go index 392aaa1..b2d43cf 100644 --- a/services/user.go +++ b/services/user.go @@ -1,12 +1,50 @@ 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() +} |
