30 lines
873 B
Go
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
|
|
}
|