Add depot, attendant, jetfire, optimus, ota services with kustomize overlays
This commit is contained in:
70
services/attendant/handlers/updates_get.go
Normal file
70
services/attendant/handlers/updates_get.go
Normal file
@@ -0,0 +1,70 @@
|
||||
package handlers
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"github.com/fiskerinc/cloud-services/services/attendant/services"
|
||||
|
||||
"github.com/fiskerinc/cloud-services/pkg/cache"
|
||||
"github.com/fiskerinc/cloud-services/pkg/common"
|
||||
s "github.com/fiskerinc/cloud-services/pkg/common/carupdatestatus"
|
||||
"github.com/fiskerinc/cloud-services/pkg/logger"
|
||||
"github.com/fiskerinc/cloud-services/pkg/validator"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
// VehicleData extracts VIN from byte slice
|
||||
type VehicleData struct {
|
||||
VIN string `json:"vin" validate:"required,vin"`
|
||||
}
|
||||
|
||||
// GetUpdates queries DB for updates based off VIN and
|
||||
//
|
||||
// sends redis message back to requester
|
||||
func GetUpdates(db *services.DB, id string, data []byte) error {
|
||||
clientPool := services.RedisClientPool()
|
||||
|
||||
var v VehicleData
|
||||
err := json.Unmarshal(data, &v)
|
||||
if err != nil {
|
||||
return errors.WithStack(err)
|
||||
}
|
||||
|
||||
err = validator.ValidateStruct(&v)
|
||||
if err != nil {
|
||||
return errors.WithStack(err)
|
||||
}
|
||||
|
||||
ok, err := cache.VerifyCarToDriver(clientPool, db.GetCars(), v.VIN, id)
|
||||
if err != nil {
|
||||
return err
|
||||
} else if !ok {
|
||||
return cache.ErrInvalidCarToDriverAssociation(v.VIN, id)
|
||||
}
|
||||
|
||||
cu := common.CarUpdate{
|
||||
VIN: v.VIN,
|
||||
Status: s.InstallApprovalAwait,
|
||||
}
|
||||
updates, err := db.GetCarUpdates().Select(&cu, nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
result := make([]common.ApprovalUpdate, len(updates))
|
||||
for i := range updates {
|
||||
result[i] = common.NewApprovalUpdates(&updates[i])
|
||||
}
|
||||
|
||||
client := clientPool.GetFromPool()
|
||||
defer client.Close()
|
||||
logger.Debug().Msgf("Sending redis queue- %s, key- %s, hander- %s, data- %v", "attendant", id, "updates", result)
|
||||
return client.SafeQueueMessage(
|
||||
common.Mobile.Key(id),
|
||||
common.Message{
|
||||
Handler: "updates",
|
||||
Data: result,
|
||||
},
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user