qudoco-be/app/module/popup_news_contents/service/popup_news_contents.service.go

77 lines
2.1 KiB
Go
Raw Normal View History

2026-04-09 18:08:56 +00:00
package service
import (
"github.com/rs/zerolog"
"web-qudo-be/app/module/popup_news_contents/mapper"
"web-qudo-be/app/module/popup_news_contents/repository"
"web-qudo-be/app/module/popup_news_contents/request"
"web-qudo-be/app/module/popup_news_contents/response"
"web-qudo-be/utils/paginator"
)
// service struct
type popupNewsContentsService struct {
Repo repository.PopupNewsContentsRepository
Log zerolog.Logger
}
// interface
type PopupNewsContentsService interface {
All(req request.PopupNewsContentsQueryRequest) (data []*response.PopupNewsContentsResponse, paging paginator.Pagination, err error)
Show(id uint) (*response.PopupNewsContentsResponse, error)
Save(req request.PopupNewsContentsCreateRequest) error
Update(id uint, req request.PopupNewsContentsUpdateRequest) error
Delete(id uint) error
}
// constructor
func NewPopupNewsContentsService(repo repository.PopupNewsContentsRepository, log zerolog.Logger) PopupNewsContentsService {
return &popupNewsContentsService{
Repo: repo,
Log: log,
}
}
// All
func (_i *popupNewsContentsService) All(req request.PopupNewsContentsQueryRequest) (datas []*response.PopupNewsContentsResponse, paging paginator.Pagination, err error) {
results, paging, err := _i.Repo.GetAll(req)
if err != nil {
return
}
for _, result := range results {
datas = append(datas, mapper.PopupNewsContentsResponseMapper(result))
}
return
}
// Show
func (_i *popupNewsContentsService) Show(id uint) (*response.PopupNewsContentsResponse, error) {
result, err := _i.Repo.FindOne(id)
if err != nil {
return nil, err
}
return mapper.PopupNewsContentsResponseMapper(result), nil
}
// Save
func (_i *popupNewsContentsService) Save(req request.PopupNewsContentsCreateRequest) error {
_i.Log.Info().Interface("data", req).Msg("create popup news content")
return _i.Repo.Create(req.ToEntity())
}
// Update
func (_i *popupNewsContentsService) Update(id uint, req request.PopupNewsContentsUpdateRequest) error {
_i.Log.Info().Interface("data", req).Msg("update popup news content")
return _i.Repo.Update(id, req.ToEntity())
}
// Delete
func (_i *popupNewsContentsService) Delete(id uint) error {
return _i.Repo.Delete(id)
}