package sql import ( "context" "tercul/internal/domain" "tercul/internal/domain/localization" "gorm.io/gorm" ) type localizationRepository struct { db *gorm.DB } func NewLocalizationRepository(db *gorm.DB) localization.LocalizationRepository { return &localizationRepository{db: db} } func (r *localizationRepository) GetTranslation(ctx context.Context, key string, language string) (string, error) { var l localization.Localization err := r.db.WithContext(ctx).Where("key = ? AND language = ?", key, language).First(&l).Error if err != nil { return "", err } return l.Value, nil } func (r *localizationRepository) GetTranslations(ctx context.Context, keys []string, language string) (map[string]string, error) { var localizations []localization.Localization err := r.db.WithContext(ctx).Where("key IN ? AND language = ?", keys, language).Find(&localizations).Error if err != nil { return nil, err } result := make(map[string]string) for _, l := range localizations { result[l.Key] = l.Value } return result, nil } func (r *localizationRepository) GetAuthorBiography(ctx context.Context, authorID uint, language string) (string, error) { var translation domain.Translation err := r.db.WithContext(ctx). Where("translatable_type = ? AND translatable_id = ? AND language = ?", "authors", authorID, language). First(&translation).Error if err != nil { if err == gorm.ErrRecordNotFound { return "", nil } return "", err } return translation.Content, nil }