37 lines
982 B
Go
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
|
|
})
|
|
}
|