package redis import "GoNavi-Wails/internal/connection" // RedisValue represents a Redis value with its type and metadata type RedisValue struct { Type string `json:"type"` // string, hash, list, set, zset, stream TTL int64 `json:"ttl"` // TTL in seconds, -1 means no expiry, -2 means key doesn't exist Value interface{} `json:"value"` // The actual value Length int64 `json:"length"` // Length/size of the value } // RedisDBInfo represents information about a Redis database type RedisDBInfo struct { Index int `json:"index"` // Database index (single: 0-15, cluster: logical 0-15) Keys int64 `json:"keys"` // Number of keys in this database } // RedisKeyInfo represents information about a Redis key type RedisKeyInfo struct { Key string `json:"key"` Type string `json:"type"` TTL int64 `json:"ttl"` } // RedisScanResult represents the result of a SCAN operation type RedisScanResult struct { Keys []RedisKeyInfo `json:"keys"` Cursor string `json:"cursor"` } // RedisClient defines the interface for Redis operations type RedisClient interface { // Connection management Connect(config connection.ConnectionConfig) error Close() error Ping() error // Key operations ScanKeys(pattern string, cursor uint64, count int64) (*RedisScanResult, error) GetKeyType(key string) (string, error) GetTTL(key string) (int64, error) SetTTL(key string, ttl int64) error DeleteKeys(keys []string) (int64, error) RenameKey(oldKey, newKey string) error KeyExists(key string) (bool, error) // Value operations GetValue(key string) (*RedisValue, error) // String operations GetString(key string) (string, error) SetString(key, value string, ttl int64) error // Hash operations GetHash(key string) (map[string]string, error) SetHashField(key, field, value string) error DeleteHashField(key string, fields ...string) error // List operations GetList(key string, start, stop int64) ([]string, error) ListPush(key string, values ...string) error ListSet(key string, index int64, value string) error // Set operations GetSet(key string) ([]string, error) SetAdd(key string, members ...string) error SetRemove(key string, members ...string) error // Sorted Set operations GetZSet(key string, start, stop int64) ([]ZSetMember, error) ZSetAdd(key string, members ...ZSetMember) error ZSetRemove(key string, members ...string) error // Stream operations GetStream(key, start, stop string, count int64) ([]StreamEntry, error) StreamAdd(key string, fields map[string]string, id string) (string, error) StreamDelete(key string, ids ...string) (int64, error) // Command execution ExecuteCommand(args []string) (interface{}, error) // Server information GetServerInfo() (map[string]string, error) GetDatabases() ([]RedisDBInfo, error) SelectDB(index int) error GetCurrentDB() int FlushDB() error } // ZSetMember represents a member in a sorted set type ZSetMember struct { Member string `json:"member"` Score float64 `json:"score"` } // StreamEntry represents a single stream message type StreamEntry struct { ID string `json:"id"` Fields map[string]string `json:"fields"` }