Initial cloud-services repo - gateway service + pkg modules

This commit is contained in:
Chris Rai
2026-01-30 23:14:52 -05:00
commit fbb820d7b3
1037 changed files with 171318 additions and 0 deletions

60
pkg/cache/vins.go vendored Normal file
View File

@@ -0,0 +1,60 @@
package cache
import (
"errors"
"fiskerinc.com/modules/common"
"fiskerinc.com/modules/db/queries"
"fiskerinc.com/modules/logger"
"fiskerinc.com/modules/redis"
)
// RetrieveVINs retrieves VINs from redis or from DB based on driver ID and proceeds to cache VINs
// redis keys:
//
// driver:<ID>:cars
func RetrieveVINs(client redis.Client, db queries.CarsInterface, id string) ([]string, error) {
var vins []string
driverVINsKey := redis.DriverToVINsKey(id)
// retrieve VINs from redis
err := client.GetCache(driverVINsKey, &vins, 0)
if err != nil && !errors.Is(err, redis.ErrNilObject) {
logger.Warn().Err(err).Send()
} else if len(vins) > 0 {
return vins, nil
}
// if VINs not present in redis perform DB lookup
var vehicles []common.CarToDriver
vehicles, err = db.GetCarsForDriver(id)
if err != nil {
return vins, err
}
for _, vehicle := range vehicles {
vins = append(vins, vehicle.VIN)
}
// cache drivers vehicles
err = client.SetCache(driverVINsKey, vins, redisObjectExpire)
if err != nil {
return vins, err
}
return vins, nil
}
func RetrieveVINsAsSet(client redis.Client, db queries.CarsInterface, id string) (map[string]struct{}, error) {
vins, err := RetrieveVINs(client, db, id)
if err != nil {
return nil, err
}
var vinsSet = make(map[string]struct{})
for _, vin := range vins {
vinsSet[vin] = struct{}{}
}
return vinsSet, nil
}