package service import ( "github.com/rs/zerolog" "go-humas-be/app/module/users/mapper" "go-humas-be/app/module/users/repository" "go-humas-be/app/module/users/request" "go-humas-be/app/module/users/response" "go-humas-be/utils/paginator" ) // UsersService type usersService struct { Repo repository.UsersRepository Log zerolog.Logger } // UsersService define interface of IUsersService type UsersService interface { All(req request.UsersQueryRequest) (users []*response.UsersResponse, paging paginator.Pagination, err error) Show(id uint) (users *response.UsersResponse, err error) Save(req request.UsersCreateRequest) (err error) Update(id uint, req request.UsersUpdateRequest) (err error) Delete(id uint) error } // NewUsersService init UsersService func NewUsersService(repo repository.UsersRepository, log zerolog.Logger) UsersService { return &usersService{ Repo: repo, Log: log, } } // All implement interface of UsersService func (_i *usersService) All(req request.UsersQueryRequest) (users []*response.UsersResponse, paging paginator.Pagination, err error) { results, paging, err := _i.Repo.GetAll(req) if err != nil { return } for _, result := range results { users = append(users, mapper.UsersResponseMapper(result)) } return } func (_i *usersService) Show(id uint) (users *response.UsersResponse, err error) { result, err := _i.Repo.FindOne(id) if err != nil { return nil, err } return mapper.UsersResponseMapper(result), nil } func (_i *usersService) Save(req request.UsersCreateRequest) (err error) { _i.Log.Info().Interface("data", req).Msg("") return _i.Repo.Create(req.ToEntity()) } func (_i *usersService) Update(id uint, req request.UsersUpdateRequest) (err error) { _i.Log.Info().Interface("data", req).Msg("") return _i.Repo.Update(id, req.ToEntity()) } func (_i *usersService) Delete(id uint) error { result, err := _i.Repo.FindOne(id) if err != nil { return err } isActive := false result.IsActive = &isActive return _i.Repo.Update(id, result) }