package persistence import ( domain "RenewCMS/internal/domain/language" "RenewCMS/internal/infrastructure/persistence/mappers" entity "RenewCMS/internal/infrastructure/persistence/models" "gorm.io/gorm" ) type SiteLanguageRepository struct { db *gorm.DB } func NewSiteLanguageRepository(db *gorm.DB) *SiteLanguageRepository { return &SiteLanguageRepository{db} } func (s *SiteLanguageRepository) ListBySite(siteID uint32) ([]domain.SiteLanguage, error) { var found []entity.SiteLanguage if err := s.db.Where("site_id = ?", siteID).Order("is_default DESC, lang ASC").Find(&found).Error; err != nil { return nil, err } languages := make([]domain.SiteLanguage, 0, len(found)) for _, row := range found { languages = append(languages, mappers.SiteLanguageToDomain(row)) } return languages, nil } func (s *SiteLanguageRepository) LockSiteLanguages(siteID uint32) ([]domain.SiteLanguage, error) { if _, err := lockSite(s.db, siteID); err != nil { return nil, err } return s.ListBySite(siteID) } func (s *SiteLanguageRepository) MarkConfirmed(siteID uint32, tag string) error { return s.db.Model(&entity.SiteLanguage{}).Where("site_id = ? AND lang = ?", siteID, tag).UpdateColumn("confirmed", true).Error } var _ domain.Repository = &SiteLanguageRepository{}