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

37 lines
982 B
Go

package useCases
import (
"RenewCMS/internal/domain/language"
"RenewCMS/internal/domain/transaction"
"context"
)
type ConfirmDefaultLanguageUseCase struct {
transactor transaction.Transactor
}
func NewConfirmDefaultLanguageUseCase(transactor transaction.Transactor) *ConfirmDefaultLanguageUseCase {
return &ConfirmDefaultLanguageUseCase{transactor}
}
func (u *ConfirmDefaultLanguageUseCase) Confirm(ctx context.Context, siteID uint32) error {
return u.transactor.Run(ctx, func(tx transaction.Repositories) error {
languages, err := tx.Languages.LockSiteLanguages(siteID)
if err != nil {
return err
}
defaultLanguage, found := language.DefaultOf(languages)
if !found {
return language.ErrNoDefaultLanguage
}
if defaultLanguage.Confirmed {
return nil
}
if err := tx.Languages.MarkConfirmed(siteID, defaultLanguage.Tag); err != nil {
return err
}
_, err = tx.Articles.AssignUnassignedLanguage(siteID, defaultLanguage.Tag)
return err
})
}