jaecoo-be/app/module/gallery_files/service/gallery_files.service.go

108 lines
2.7 KiB
Go
Raw Normal View History

2025-11-15 17:43:23 +00:00
package service
import (
"errors"
"jaecoo-be/app/module/gallery_files/mapper"
"jaecoo-be/app/module/gallery_files/repository"
"jaecoo-be/app/module/gallery_files/request"
"jaecoo-be/app/module/gallery_files/response"
"jaecoo-be/config/config"
"jaecoo-be/utils/paginator"
"github.com/rs/zerolog"
)
type galleryFilesService struct {
Repo repository.GalleryFilesRepository
Log zerolog.Logger
Cfg *config.Config
}
type GalleryFilesService interface {
GetAll(req request.GalleryFilesQueryRequest) (files []*response.GalleryFilesResponse, paging paginator.Pagination, err error)
GetOne(id uint) (file *response.GalleryFilesResponse, err error)
Create(req request.GalleryFilesCreateRequest) (file *response.GalleryFilesResponse, err error)
Update(id uint, req request.GalleryFilesUpdateRequest) (file *response.GalleryFilesResponse, err error)
Delete(id uint) (err error)
}
func NewGalleryFilesService(repo repository.GalleryFilesRepository, log zerolog.Logger, cfg *config.Config) GalleryFilesService {
return &galleryFilesService{
Repo: repo,
Log: log,
Cfg: cfg,
}
}
func (_i *galleryFilesService) GetAll(req request.GalleryFilesQueryRequest) (files []*response.GalleryFilesResponse, paging paginator.Pagination, err error) {
filesEntity, paging, err := _i.Repo.GetAll(req)
if err != nil {
return
}
host := _i.Cfg.App.Domain
for _, file := range filesEntity {
files = append(files, mapper.GalleryFilesResponseMapper(file, host))
}
return
}
func (_i *galleryFilesService) GetOne(id uint) (file *response.GalleryFilesResponse, err error) {
fileEntity, err := _i.Repo.FindOne(id)
if err != nil {
return
}
if fileEntity == nil {
err = errors.New("gallery file not found")
return
}
host := _i.Cfg.App.Domain
file = mapper.GalleryFilesResponseMapper(fileEntity, host)
return
}
func (_i *galleryFilesService) Create(req request.GalleryFilesCreateRequest) (file *response.GalleryFilesResponse, err error) {
fileEntity := req.ToEntity()
isActive := true
fileEntity.IsActive = &isActive
fileEntity, err = _i.Repo.Create(fileEntity)
if err != nil {
return
}
host := _i.Cfg.App.Domain
file = mapper.GalleryFilesResponseMapper(fileEntity, host)
return
}
func (_i *galleryFilesService) Update(id uint, req request.GalleryFilesUpdateRequest) (file *response.GalleryFilesResponse, err error) {
fileEntity := req.ToEntity()
err = _i.Repo.Update(id, fileEntity)
if err != nil {
return
}
fileEntity, err = _i.Repo.FindOne(id)
if err != nil {
return
}
host := _i.Cfg.App.Domain
file = mapper.GalleryFilesResponseMapper(fileEntity, host)
return
}
func (_i *galleryFilesService) Delete(id uint) (err error) {
err = _i.Repo.Delete(id)
return
}