2025-10-15 10:43:58 -04:00

30 lines
873 B
Go

package utils
import (
"encoding/json"
"fmt"
"github.com/tuusuario/go-sync-service/internal/config"
"github.com/tuusuario/go-sync-service/internal/domain/ports"
)
// Función genérica para deserializar un JSON de Redis a cualquier tipo
func CargarDesdeRedis[T any](cfg ports.RedisConfigProvider, clave string) (*T, error) {
data, err := cfg.GetString(clave)
if err != nil {
config.Log.Errorf("⚠️ error al obtener config de Redis [%s]: %s", clave, err)
return nil, fmt.Errorf("error al obtener clave [%s] de redis: %w", clave, err)
}
config.Log.Debugf("🔑 Clave [%s] obtenida de Redis: %s", clave, data)
var result T
if err := json.Unmarshal([]byte(data), &result); err != nil {
config.Log.Errorf("❌ error al parsear JSON [%s]: %s", clave, err)
return nil, fmt.Errorf("error al parsear JSON [%s]: %w", clave, err)
}
return &result, nil
}