service

package
v0.0.0-...-4598f8e Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 13, 2022 License: MIT Imports: 5 Imported by: 0

Documentation

Overview

Package service for 'User' It will implementing interfaces available on 'user repository' and create bridge for the 'repository' package and 'handler' package

Package 'service' helper for 'User' model * DTO to Model conversion * Model to DTO conversion

Package service for 'User Role' It will implementing interfaces available on 'user role repository' and create bridge for the 'repository' package and 'handler' package

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewUser

func NewUser(repo repository.UserRepository) *userService

NewUser will return userService instance to connect the service and repository

func NewUserRole

func NewUserRole(r repository.UserRoleRepository) *userRoleService

NewRole will create new instance to bridge 'user role repo' and 'user role handler'

func RequestToRole

func RequestToRole(roleRx RoleRequest) (role *model.Role)

RequestToRole will convert user 'input request' role dto to savable 'role model' format

func RequestToUser

func RequestToUser(userRx UserRequest) (user *model.User)

convert 'Request' data from client to 'User' model before pased to database

Types

type Credential

type Credential struct {
	Username string `json:"username"`
	Email    string `json:"email"`
	Password string `json:"password"`
	Active   bool   `json:"active"`
}

Credential is 'DTO' (Data Transfer Object) for user response This is used for login/ credential checking or other similar operation

type RoleRequest

type RoleRequest struct {
	ID          uint   `json:"id"`
	Name        string `json:"name" binding:"required"`
	Description string `json:"description"`
}

RoleRequest is 'DTO' (Data Transfer Object) for 'Role' model It will receive 'Role' data and processed (save/update) to database

type RoleResponse

type RoleResponse struct {
	ID          uint   `json:"id"`
	Name        string `json:"name"`
	Description string `json:"description"`
}

RoleResponse is 'DTO' (Data Transfer Object) for 'Role' model It will send 'role' data to client

func RequestToResponseRole

func RequestToResponseRole(roleRx RoleRequest) (roleResponse *RoleResponse)

RequestToResponseRole will convert 'request DTO' to 'Response DTO' format

func RoleToResponse

func RoleToResponse(role model.Role) (roleResponse *RoleResponse)

RoleToResponse will convert 'Role' model to 'Response DTO' format

type UserRequest

type UserRequest struct {
	Username  string       `json:"username" binding:"required"`
	Firstname string       `json:"first_name" binding:"required"`
	Lastname  string       `json:"last_name"`
	Email     string       `json:"email" binding:"required"`
	Password  string       `json:"password" binding:"required"`
	Active    bool         `json:"active,default=false"`
	RoleID    uint         `json:"role_id" binding:"required"`
	Role      *RoleRequest `json:"role"`
}

UserRequest is 'DTO' (Data Transfer Object) for 'User' request It will receive 'User' data and processed (save/update) to database

func ResponseToRequestUser

func ResponseToRequestUser(userTx UserResponse) *UserRequest

UserResponseToRequest will convert 'Response' data from client into 'Request' before pased to database

type UserResponse

type UserResponse struct {
	ID        uuid.UUID     `json:"id"`
	Username  string        `json:"username"`
	Firstname string        `json:"first_name"`
	Lastname  string        `json:"last_name"`
	Email     string        `json:"email"`
	Password  string        `json:"password"`
	Active    bool          `json:"active"`
	RoleID    uint          `json:"role_id"`
	Role      *RoleResponse `json:"role"`
}

UserResponse is 'DTO' (Data Transfer Object) for 'User' model It will send 'User' data to client

func UserToResponse

func UserToResponse(user model.User) (userResponse *UserResponse)

convert 'User' model to 'Response' struct before displaying to client

type UserRoleService

type UserRoleService interface {
	Get(id uint) (roleResponse *RoleResponse, err error)
	Gets() (rolesResponse *[]RoleResponse, err error)
	Create(input RoleRequest) (roleResponse *RoleResponse, err error)
	Update(id uint, input RoleRequest) (roleResponse *RoleResponse, err error)
}

UserRoleService is middleware interface for the repository and handler

type UserService

type UserService interface {
	Get(username string) (user *UserResponse, err error)
	GetByEmail(username string) (user *UserResponse, err error)
	Gets() (users *[]UserResponse, err error)
	Create(input UserRequest) (user *UserResponse, err error)
	Update(username string, input UserRequest) (user *UserResponse, err error)
	CheckCredential(username, password string) (isActive, isValid bool)
	CheckCredentialByMail(email, password string) (isActive, isValid bool)
	UserNotFound(username string) (isUserNotFound bool)
	UserAvailable(username, email string) (isUserAvailable bool)
}

UserService is Interface for User Repository with our Handler

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL