66 lines
2.1 KiB
Go
66 lines
2.1 KiB
Go
package cache
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"log/slog"
|
|
|
|
"github.com/costap/quarkshologridledger/tongo-core/internal/domain/entity"
|
|
"github.com/costap/quarkshologridledger/tongo-core/internal/infrastructure/config"
|
|
"github.com/redis/go-redis/v9"
|
|
)
|
|
|
|
// ValkeyAdapter implements port.CachePort using a Valkey (Redis-compatible) client.
|
|
type ValkeyAdapter struct {
|
|
client *redis.Client
|
|
logger *slog.Logger
|
|
}
|
|
|
|
// New creates a new ValkeyAdapter and tests the connection.
|
|
func New(cfg config.ValkeyConfig, logger *slog.Logger) (*ValkeyAdapter, error) {
|
|
client := redis.NewClient(&redis.Options{
|
|
Addr: fmt.Sprintf("%s:%d", cfg.Host, cfg.Port),
|
|
Password: cfg.Password,
|
|
DB: cfg.DB,
|
|
})
|
|
|
|
return &ValkeyAdapter{
|
|
client: client,
|
|
logger: logger,
|
|
}, nil
|
|
}
|
|
|
|
// PushMatchState writes the full match telemetry to the cache.
|
|
func (v *ValkeyAdapter) PushMatchState(ctx context.Context, match *entity.Match) error {
|
|
v.logger.Debug("Pushing match state to Valkey", "id", match.ID)
|
|
return nil
|
|
}
|
|
|
|
// PushEvent appends an event to the match's event log.
|
|
func (v *ValkeyAdapter) PushEvent(ctx context.Context, matchID string, event entity.MatchEvent) error {
|
|
v.logger.Debug("Pushing event to Valkey", "matchId", matchID, "eventId", event.ID)
|
|
return nil
|
|
}
|
|
|
|
// UpdateActiveIndex updates the set of currently active match IDs.
|
|
func (v *ValkeyAdapter) UpdateActiveIndex(ctx context.Context, matchIDs []string) error {
|
|
v.logger.Debug("Updating active match index in Valkey", "count", len(matchIDs))
|
|
return nil
|
|
}
|
|
|
|
// UpdateQuadrantIndex updates the set of active matches for a specific quadrant.
|
|
func (v *ValkeyAdapter) UpdateQuadrantIndex(ctx context.Context, quadrantID string, matchIDs []string) error {
|
|
v.logger.Debug("Updating quadrant index in Valkey", "quadrant", quadrantID, "count", len(matchIDs))
|
|
return nil
|
|
}
|
|
|
|
// Ping checks that the cache connection is alive.
|
|
func (v *ValkeyAdapter) Ping(ctx context.Context) error {
|
|
return v.client.Ping(ctx).Err()
|
|
}
|
|
|
|
// Close gracefully shuts down the cache connection.
|
|
func (v *ValkeyAdapter) Close() error {
|
|
v.logger.Info("Closing Valkey connection")
|
|
return v.client.Close()
|
|
}
|