package repository import ( "context" dbgen "github.com/SamuelTariku/FortuneBet-Backend/gen/db" "github.com/SamuelTariku/FortuneBet-Backend/internal/domain" "go.uber.org/zap" ) func (s *Store) GetGlobalSettingList(ctx context.Context) (domain.SettingList, error) { settings, err := s.queries.GetGlobalSettings(ctx) if err != nil { domain.MongoDBLogger.Error("failed to get all settings", zap.Error(err)) return domain.SettingList{}, err } return domain.ConvertDBGlobalSettingList(settings) } func (s *Store) GetGlobalSettings(ctx context.Context) ([]domain.Setting, error) { settings, err := s.queries.GetGlobalSettings(ctx) if err != nil { domain.MongoDBLogger.Error("failed to get all settings", zap.Error(err)) } var result []domain.Setting = make([]domain.Setting, 0, len(settings)) for _, setting := range settings { result = append(result, domain.Setting{ Key: setting.Key, Value: setting.Value, UpdatedAt: setting.UpdatedAt.Time, }) } return result, nil } func (s *Store) GetGlobalSetting(ctx context.Context, key string) (domain.Setting, error) { dbSetting, err := s.queries.GetGlobalSetting(ctx, key) if err != nil { domain.MongoDBLogger.Error("failed to get all settings", zap.Error(err)) } result := domain.Setting{ Key: dbSetting.Key, Value: dbSetting.Value, UpdatedAt: dbSetting.UpdatedAt.Time, } return result, nil } func (s *Store) UpdateGlobalSetting(ctx context.Context, key, value string) error { err := s.queries.UpdateGlobalSetting(ctx, dbgen.UpdateGlobalSettingParams{ Key: key, Value: value, }) if err != nil { domain.MongoDBLogger.Error("failed to update setting", zap.String("key", key), zap.String("value", value), zap.Error(err), ) return err } return err } func (s *Store) UpdateGlobalSettingList(ctx context.Context, settingList domain.ValidSettingList) error { convertedSettings := settingList.ConvertAllSettings() for _, setting := range convertedSettings { err := s.UpdateGlobalSetting(ctx, setting.Key, setting.Value) if err != nil { domain.MongoDBLogger.Warn("failed to update setting list", zap.String("key", setting.Key), zap.Error(err)) return err } } return nil } func (s *Store) InsertCompanySetting(ctx context.Context, key, value string, companyID int64) error { err := s.queries.InsertCompanySetting(ctx, dbgen.InsertCompanySettingParams{ CompanyID: companyID, Key: key, Value: value, }) if err != nil { return err } return nil } func (s *Store) InsertCompanySettingList(ctx context.Context, settingList domain.ValidSettingList, companyID int64) error { convertedSettings := settingList.ConvertAllSettings() for _, setting := range convertedSettings { err := s.InsertCompanySetting(ctx, setting.Key, setting.Value, companyID) if err != nil { domain.MongoDBLogger.Warn("failed to update setting list", zap.String("key", setting.Key), zap.Error(err)) return err } } return nil } func (s *Store) GetAllCompanySettings(ctx context.Context) ([]domain.CompanySetting, error) { settings, err := s.queries.GetAllCompanySettings(ctx) if err != nil { return nil, err } return domain.ConvertCompanySettings(settings), nil } func (s *Store) GetCompanySettingsByKey(ctx context.Context, key string) ([]domain.CompanySetting, error) { settings, err := s.queries.GetCompanySettingsByKey(ctx, key) if err != nil { return nil, err } return domain.ConvertCompanySettings(settings), nil } func (s *Store) GetOverrideSettings(ctx context.Context, companyID int64) ([]domain.Setting, error) { settings, err := s.queries.GetOverrideSettings(ctx, companyID) if err != nil { return nil, err } result := make([]domain.Setting, 0, len(settings)) for _, setting := range settings { result = append(result, domain.Setting{ Key: setting.Key, Value: setting.Value, UpdatedAt: setting.UpdatedAt.Time, }) } return result, nil } func (s *Store) GetOverrideSettingsList(ctx context.Context, companyID int64) (domain.SettingList, error) { settings, err := s.queries.GetOverrideSettings(ctx, companyID) if err != nil { return domain.SettingList{}, err } return domain.ConvertDBOverrideSettingList(settings) } func (s *Store) DeleteCompanySetting(ctx context.Context, companyID int64, key string) error { return s.queries.DeleteCompanySetting(ctx, dbgen.DeleteCompanySettingParams{ CompanyID: companyID, Key: key, }) } func (s *Store) DeleteAllCompanySetting(ctx context.Context, companyID int64,) error { return s.queries.DeleteAllCompanySetting(ctx, companyID) }