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 }) }