87 lines
2.2 KiB
Go
87 lines
2.2 KiB
Go
|
|
package service
|
||
|
|
|
||
|
|
import (
|
||
|
|
"github.com/rs/zerolog"
|
||
|
|
|
||
|
|
"web-qudo-be/app/database/entity"
|
||
|
|
ourServiceContentImagesService "web-qudo-be/app/module/our_service_content_images/service"
|
||
|
|
"web-qudo-be/app/module/our_service_contents/repository"
|
||
|
|
)
|
||
|
|
|
||
|
|
type ourServiceContentService struct {
|
||
|
|
Repo repository.OurServiceContentRepository
|
||
|
|
ImageService ourServiceContentImagesService.OurServiceContentImagesService
|
||
|
|
Log zerolog.Logger
|
||
|
|
}
|
||
|
|
|
||
|
|
type OurServiceContentService interface {
|
||
|
|
Show() (*entity.OurServiceContent, error)
|
||
|
|
Save(data *entity.OurServiceContent) (*entity.OurServiceContent, error)
|
||
|
|
Update(id uint, data *entity.OurServiceContent) error
|
||
|
|
Delete(id uint) error
|
||
|
|
}
|
||
|
|
|
||
|
|
func NewOurServiceContentService(
|
||
|
|
repo repository.OurServiceContentRepository,
|
||
|
|
imageService ourServiceContentImagesService.OurServiceContentImagesService,
|
||
|
|
log zerolog.Logger,
|
||
|
|
) OurServiceContentService {
|
||
|
|
return &ourServiceContentService{
|
||
|
|
Repo: repo,
|
||
|
|
ImageService: imageService,
|
||
|
|
Log: log,
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func (s *ourServiceContentService) Show() (*entity.OurServiceContent, error) {
|
||
|
|
data, err := s.Repo.Get()
|
||
|
|
if err != nil {
|
||
|
|
s.Log.Error().Err(err).Msg("failed get our service content")
|
||
|
|
return nil, err
|
||
|
|
}
|
||
|
|
|
||
|
|
return data, nil
|
||
|
|
}
|
||
|
|
|
||
|
|
func (s *ourServiceContentService) Save(data *entity.OurServiceContent) (*entity.OurServiceContent, error) {
|
||
|
|
result, err := s.Repo.Create(data)
|
||
|
|
if err != nil {
|
||
|
|
s.Log.Error().Err(err).Msg("failed create our service content")
|
||
|
|
return nil, err
|
||
|
|
}
|
||
|
|
|
||
|
|
// 🔥 kalau nanti mau save images sekalian
|
||
|
|
// contoh:
|
||
|
|
// for _, img := range data.Images {
|
||
|
|
// img.OurServiceContentID = result.ID
|
||
|
|
// s.ImageService.Save(&img)
|
||
|
|
// }
|
||
|
|
|
||
|
|
return result, nil
|
||
|
|
}
|
||
|
|
|
||
|
|
func (s *ourServiceContentService) Update(id uint, data *entity.OurServiceContent) error {
|
||
|
|
err := s.Repo.Update(id, data)
|
||
|
|
if err != nil {
|
||
|
|
s.Log.Error().Err(err).Msg("failed update our service content")
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
|
||
|
|
// 🔥 handle update images (opsional)
|
||
|
|
// bisa delete lama → insert baru
|
||
|
|
// atau update satu-satu
|
||
|
|
|
||
|
|
return nil
|
||
|
|
}
|
||
|
|
|
||
|
|
func (s *ourServiceContentService) Delete(id uint) error {
|
||
|
|
result, err := s.Repo.Get()
|
||
|
|
if err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
|
||
|
|
isActive := false
|
||
|
|
result.IsActive = &isActive
|
||
|
|
|
||
|
|
return s.Repo.Update(id, result)
|
||
|
|
}
|