Files
RenewCMS/internal/infrastructure/useCases/SetDefaultSite.go
T

37 lines
920 B
Go

package useCases
import (
"RenewCMS/internal/domain/audit"
"RenewCMS/internal/domain/site"
"context"
)
type SetDefaultSiteUseCase struct {
siteRepository site.Repository
recorder audit.Recorder
}
func NewSetDefaultSiteUseCase(siteRepository site.Repository, recorder audit.Recorder) *SetDefaultSiteUseCase {
return &SetDefaultSiteUseCase{siteRepository, recorder}
}
func (u *SetDefaultSiteUseCase) SetDefault(ctx context.Context, id uint32) (site.Site, error) {
current, err := u.siteRepository.Get(id)
if err != nil {
return site.Site{}, err
}
if current.IsDefault {
return current, nil
}
event := audit.NewEvent(audit.ActionSiteSetDefault, audit.CategorySites)
event.Target = siteTarget(current)
updated, err := u.siteRepository.SetDefault(id)
if err != nil {
recordFailure(ctx, u.recorder, event, err)
return site.Site{}, err
}
u.recorder.Record(ctx, event)
return updated, nil
}