Initial cloud-services repo - gateway service + pkg modules
This commit is contained in:
163
pkg/redis/keys.go
Normal file
163
pkg/redis/keys.go
Normal file
@@ -0,0 +1,163 @@
|
||||
package redis
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"runtime/debug"
|
||||
|
||||
"fiskerinc.com/modules/logger"
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
const (
|
||||
channelPrefix = "channel"
|
||||
|
||||
SupersetAccTokenKey = "superset:access_token"
|
||||
)
|
||||
|
||||
// ChannelKey provides hash value for redis channel
|
||||
func ChannelKey(id string) string {
|
||||
return fmt.Sprintf("%s:%s", channelPrefix, id)
|
||||
}
|
||||
|
||||
// ParseChannelKey returns id from hash value
|
||||
func ParseChannelKey(key string) string {
|
||||
return key[len(channelPrefix)+1:]
|
||||
}
|
||||
|
||||
const queuePrefix = "queue"
|
||||
|
||||
// QueueKey provides hash value for redis queue
|
||||
func QueueKey(id string) string {
|
||||
if id == "" {
|
||||
stack := debug.Stack()
|
||||
logger.Warn().Str("Queue", queuePrefix).Str("ID", id).Str("Stack", string(stack)).Msg("Creating Redis Queue Key Empty")
|
||||
|
||||
}
|
||||
return fmt.Sprintf("%s:%s", queuePrefix, id)
|
||||
}
|
||||
|
||||
// ParseQueueKey returns id from hash value
|
||||
func ParseQueueKey(key string) string {
|
||||
return key[len(queuePrefix)+1:]
|
||||
}
|
||||
|
||||
func CarConfigKey(vin string) string {
|
||||
return fmt.Sprintf("car:%s:config", vin)
|
||||
}
|
||||
|
||||
func CarLogFilter(vin string) string {
|
||||
return fmt.Sprintf("car:%s:state:log", vin)
|
||||
}
|
||||
|
||||
// WindowsHashKey provides hash key lookup string for windows state
|
||||
func WindowsHashKey(vin string) string {
|
||||
return fmt.Sprintf("car:%s:state:windows", vin)
|
||||
}
|
||||
|
||||
// CarStateHashKey provides hash key structure for car state
|
||||
//
|
||||
// car state values such as windows, locks, etc. are stored as
|
||||
// keys in the redis hash map
|
||||
func CarStateHashKey(vin string) string {
|
||||
return fmt.Sprintf("car:%s:state", vin)
|
||||
}
|
||||
|
||||
// CarAlerts returns key of expiring cache of sent car alerts.
|
||||
func CarAlerts(vin string) string {
|
||||
return fmt.Sprintf("car:%s:alerts", vin)
|
||||
}
|
||||
|
||||
// CANParseSignalWarnings returns key of expiring cache of unknown signals.
|
||||
func CANParseSignalWarnings(version string) string {
|
||||
return fmt.Sprintf("can:version:%s:signals:warn", version)
|
||||
}
|
||||
|
||||
// CarToDriverKey provides hash key lookup for driver associated with car
|
||||
func CarToDriverKey(vin string, id string) string {
|
||||
return fmt.Sprintf("car:%s:driver:%s", vin, id)
|
||||
}
|
||||
|
||||
// CarToAllDriversKey provides hash key lookup for drivers associated with car
|
||||
func CarToAllDriversKey(vin string) string {
|
||||
return fmt.Sprintf("car:%s:drivers", vin)
|
||||
}
|
||||
|
||||
// CarSessionsKey provides a set of all cars in session
|
||||
func CarSessionsKey() string {
|
||||
return "cars:sessions"
|
||||
}
|
||||
|
||||
func CarLocationsKey() string {
|
||||
return "cars:locations"
|
||||
}
|
||||
|
||||
// CarUpdateStatusHashKey provides hash key lookup string for UpdateStatus
|
||||
func CarUpdateStatusHashKey(carupdateid int64) string {
|
||||
return fmt.Sprintf("carupdate:%v", carupdateid)
|
||||
}
|
||||
|
||||
// CarUpdateStatusHMIHashKey provides hash key lookup string for UpdateStatus
|
||||
func CarUpdateStatusTBOXHashKey(carupdateid int64) string {
|
||||
return fmt.Sprintf("carupdatetbox:%v", carupdateid)
|
||||
}
|
||||
|
||||
// CarUpdateStatusHMIHashKey provides hash key lookup string for UpdateStatus
|
||||
func CarUpdateStatusHMIHashKey(carupdateid int64) string {
|
||||
return fmt.Sprintf("carupdatehmi:%v", carupdateid)
|
||||
}
|
||||
|
||||
func DriverToVINsKey(id string) string {
|
||||
return fmt.Sprintf("driver:%s:cars", id)
|
||||
}
|
||||
|
||||
// HMISessionsKey provides a set of all HMIs in session
|
||||
func HMISessionsKey() string {
|
||||
return "hmi:sessions"
|
||||
}
|
||||
|
||||
// HMIManySessionsKey provides a set of all sessions cloud believes are open
|
||||
func HMIManySessionsKey(vin string) string {
|
||||
return fmt.Sprintf("hmi:%s:many-sessions", vin)
|
||||
}
|
||||
|
||||
// HMISessionKey provides hash key lookup for HMI session key
|
||||
func HMISessionKey(vin string) string {
|
||||
return fmt.Sprintf("hmi:%s:session", vin)
|
||||
}
|
||||
|
||||
func HMISaltKey(vin string) string {
|
||||
return fmt.Sprintf("hmi:%s:salt", vin)
|
||||
}
|
||||
|
||||
// FileIDEncryptionParamsKey provides hash key lookup string for file encryption parameters
|
||||
func FileIDEncryptionParamsKey(fileid string) string {
|
||||
return fmt.Sprintf("fileid:%s", fileid)
|
||||
}
|
||||
|
||||
// MobileSessionsKey provides a set of all mobiles in session
|
||||
func MobileSessionsKey() string {
|
||||
return "mobile:sessions"
|
||||
}
|
||||
|
||||
// APITokenKey provides hash key lookup string
|
||||
func APITokenKey(key string) string {
|
||||
return fmt.Sprintf("apikey:%s", key)
|
||||
}
|
||||
|
||||
func SubscriptionTypeListKey(subtypeID uuid.UUID) string {
|
||||
return fmt.Sprintf("subscriptiontypes:%s", subtypeID.String())
|
||||
}
|
||||
|
||||
// TimezoneQuadKey provides hash key lookup string
|
||||
func TimezoneQuadKey(quadkey string, zoom int) string {
|
||||
trim := min(len(quadkey), zoom)
|
||||
return fmt.Sprintf("timezone:%s", quadkey[:trim])
|
||||
}
|
||||
|
||||
func min(a, b int) int {
|
||||
if a < b {
|
||||
return a
|
||||
}
|
||||
return b
|
||||
}
|
||||
Reference in New Issue
Block a user