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 }