35 lines
914 B
Go
35 lines
914 B
Go
package database
|
|
|
|
import (
|
|
"RenewCMS/internal/domain/language"
|
|
entity "RenewCMS/internal/infrastructure/persistence/models"
|
|
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
const siteLanguageSuggestionsMarker = "site_language_suggestions"
|
|
|
|
func SeedSiteLanguageSuggestions(db *gorm.DB) error {
|
|
return db.Transaction(func(tx *gorm.DB) error {
|
|
applied, err := markerApplied(tx, siteLanguageSuggestionsMarker)
|
|
if err != nil || applied {
|
|
return err
|
|
}
|
|
var sites []entity.Site
|
|
if err := tx.Order("id ASC").Find(&sites).Error; err != nil {
|
|
return err
|
|
}
|
|
for _, site := range sites {
|
|
suggestion := language.Suggest(site.Locale)
|
|
if !suggestion.Found {
|
|
continue
|
|
}
|
|
row := entity.SiteLanguage{SiteID: site.ID, Lang: suggestion.Tag, IsDefault: true, Enabled: true, Confirmed: false}
|
|
if err := tx.Create(&row).Error; err != nil {
|
|
return err
|
|
}
|
|
}
|
|
return applyMarker(tx, siteLanguageSuggestionsMarker)
|
|
})
|
|
}
|