package domain import ( "fmt" "strings" ) // RedisKey represents a Redis key type with helper methods for key construction. type RedisKey string const ( // AccountRedisKey is the Redis key prefix for account data AccountRedisKey RedisKey = "account" // AccountUIDRedisKey is the Redis key prefix for account-UID binding data AccountUIDRedisKey RedisKey = "account_uid" // UserRedisKey is the Redis key prefix for user data UserRedisKey RedisKey = "user" // MemberPrefixRedisKey is the common prefix for all member-related Redis keys MemberPrefixRedisKey = "member" ) // ToString converts the RedisKey to its full string representation with the member prefix. func (key RedisKey) ToString() string { return "member:" + string(key) } // With appends additional parts to the RedisKey, separated by colons. func (key RedisKey) With(s ...string) RedisKey { parts := append([]string{string(key)}, s...) return RedisKey(strings.Join(parts, ":")) } // GetAccountRedisKey generates a Redis key for account data by ID. func GetAccountRedisKey(id string) string { return AccountRedisKey.With(id).ToString() } // GetAccountUIDRedisKey generates a Redis key for account-UID binding data by ID. func GetAccountUIDRedisKey(id string) string { return AccountUIDRedisKey.With(id).ToString() } // GetUserRedisKey generates a Redis key for user data by ID. func GetUserRedisKey(id string) string { return UserRedisKey.With(id).ToString() } var ( // checkVerifyKey is the Redis key prefix for verification codes checkVerifyKey = fmt.Sprintf("%s:verify:", MemberPrefixRedisKey) ) // GetCheckVerifyKey generates a Redis key for verification code data. func GetCheckVerifyKey(codeType, account string) string { return fmt.Sprintf("%s%s:%s", checkVerifyKey, codeType, account) }