41 lines
930 B
Go
41 lines
930 B
Go
package config
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"log"
|
|
"time"
|
|
|
|
"github.com/redis/go-redis/v9"
|
|
)
|
|
|
|
type RedisManager struct {
|
|
redis *redis.Client
|
|
}
|
|
|
|
func NewRedisManager(redis *redis.Client) *RedisManager {
|
|
return &RedisManager{
|
|
redis: redis,
|
|
}
|
|
}
|
|
|
|
func (pm *RedisManager) GetRawValue(ctx context.Context, codigo string) (string, error) {
|
|
|
|
val, err := pm.redis.Get(ctx, codigo).Result()
|
|
if err == redis.Nil {
|
|
return "", fmt.Errorf("clave no encontrada en Redis: %s", codigo)
|
|
} else if err != nil {
|
|
return "", err
|
|
}
|
|
return val, nil
|
|
}
|
|
|
|
func (pm *RedisManager) UpdateParam(ctx context.Context, codigo string, nuevoValor string, expiration time.Duration) error {
|
|
err := pm.redis.Set(ctx, codigo, nuevoValor, expiration).Err()
|
|
if err != nil {
|
|
return fmt.Errorf("error actualizando parámetro en Redis [%s]: %w", codigo, err)
|
|
}
|
|
log.Printf("🔄 Parámetro actualizado en Redis: %s = %s", codigo, nuevoValor)
|
|
return nil
|
|
}
|