112 lines
2.8 KiB
Go
112 lines
2.8 KiB
Go
package repository
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"strconv"
|
|
|
|
dbgen "github.com/SamuelTariku/FortuneBet-Backend/gen/db"
|
|
"github.com/SamuelTariku/FortuneBet-Backend/internal/domain"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
func GetDBSettingList(settings []dbgen.Setting) (domain.SettingList, error) {
|
|
var dbSettingList domain.DBSettingList
|
|
|
|
var int64SettingsMap = domain.ConvertInt64SettingsMap(&dbSettingList)
|
|
|
|
for _, setting := range settings {
|
|
is_setting_unknown := true
|
|
for key, dbSetting := range int64SettingsMap {
|
|
if setting.Key == key {
|
|
value, err := strconv.ParseInt(setting.Value, 10, 64)
|
|
if err != nil {
|
|
return domain.SettingList{}, err
|
|
}
|
|
*dbSetting = domain.ValidInt64{
|
|
Value: value,
|
|
Valid: true,
|
|
}
|
|
is_setting_unknown = false
|
|
}
|
|
}
|
|
|
|
if is_setting_unknown {
|
|
domain.MongoDBLogger.Warn("unknown setting found on database", zap.String("setting", setting.Key))
|
|
}
|
|
}
|
|
|
|
for key, dbSetting := range int64SettingsMap {
|
|
if !dbSetting.Valid {
|
|
fmt.Printf("setting value not found on database: %v \n", key)
|
|
domain.MongoDBLogger.Warn("setting value not found on database", zap.String("setting", key))
|
|
}
|
|
}
|
|
|
|
return domain.ConvertDBSetting(dbSettingList), nil
|
|
}
|
|
func (s *Store) GetSettingList(ctx context.Context) (domain.SettingList, error) {
|
|
settings, err := s.queries.GetSettings(ctx)
|
|
if err != nil {
|
|
domain.MongoDBLogger.Error("failed to get all settings", zap.Error(err))
|
|
}
|
|
|
|
return GetDBSettingList(settings)
|
|
}
|
|
|
|
func (s *Store) GetSettings(ctx context.Context) ([]domain.Setting, error) {
|
|
settings, err := s.queries.GetSettings(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) GetSetting(ctx context.Context, key string) (domain.Setting, error) {
|
|
dbSetting, err := s.queries.GetSetting(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) SaveSetting(ctx context.Context, key, value string) (domain.Setting, error) {
|
|
dbSetting, err := s.queries.SaveSetting(ctx, dbgen.SaveSettingParams{
|
|
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 domain.Setting{}, err
|
|
}
|
|
|
|
setting := domain.Setting{
|
|
Key: dbSetting.Key,
|
|
Value: dbSetting.Value,
|
|
}
|
|
|
|
return setting, err
|
|
|
|
}
|