| Автор | SHA1 | Съобщение | Дата |
|---|---|---|---|
|
|
355a0c9b52 | fix: floors are now persisted in the db | преди 1 седмица |
|
|
a71e69ac3a | fix: various fixes | преди 1 седмица |
| @@ -19,6 +19,7 @@ import ( | |||||
| "github.com/AFASystems/presence/internal/pkg/model" | "github.com/AFASystems/presence/internal/pkg/model" | ||||
| "github.com/AFASystems/presence/internal/pkg/service" | "github.com/AFASystems/presence/internal/pkg/service" | ||||
| "gorm.io/gorm" | "gorm.io/gorm" | ||||
| "gorm.io/gorm/clause" | |||||
| ) | ) | ||||
| // ServerApp holds dependencies and state for the server service. | // ServerApp holds dependencies and state for the server service. | ||||
| @@ -87,7 +88,7 @@ func (a *ServerApp) Init(ctx context.Context) error { | |||||
| } | } | ||||
| for _, c := range configs { | for _, c := range configs { | ||||
| a.DB.Create(&c) | |||||
| a.DB.Clauses(clause.OnConflict{DoNothing: true}).Create(&c) | |||||
| } | } | ||||
| a.DB.Find(&configs) | a.DB.Find(&configs) | ||||
| for _, c := range configs { | for _, c := range configs { | ||||
| @@ -54,6 +54,21 @@ func GetTrackerZones(token string, client *http.Client, cfg *config.Config) ([]m | |||||
| return i, nil | return i, nil | ||||
| } | } | ||||
| func GetFloors(token string, client *http.Client, cfg *config.Config) ([]model.Floor, error) { | |||||
| res, err := getRequest(token, "getFloors", client, cfg) | |||||
| if err != nil { | |||||
| return []model.Floor{}, err | |||||
| } | |||||
| var i []model.Floor | |||||
| err = json.NewDecoder(res.Body).Decode(&i) | |||||
| if err != nil { | |||||
| return []model.Floor{}, err | |||||
| } | |||||
| return i, nil | |||||
| } | |||||
| func GetZones(token string, client *http.Client, cfg *config.Config) ([]model.Zone, error) { | func GetZones(token string, client *http.Client, cfg *config.Config) ([]model.Zone, error) { | ||||
| res, err := getRequest(token, "getZones", client, cfg) | res, err := getRequest(token, "getZones", client, cfg) | ||||
| if err != nil { | if err != nil { | ||||
| @@ -52,6 +52,10 @@ func UpdateDB(db *gorm.DB, ctx context.Context, cfg *config.Config, writer *kafk | |||||
| syncTable(db, gateways) | syncTable(db, gateways) | ||||
| } | } | ||||
| if floors, err := GetFloors(token, client, cfg); err == nil { | |||||
| syncTable(db, floors) | |||||
| } | |||||
| if zones, err := GetZones(token, client, cfg); err == nil { | if zones, err := GetZones(token, client, cfg); err == nil { | ||||
| syncTable(db, zones) | syncTable(db, zones) | ||||
| } | } | ||||
| @@ -1,11 +1,11 @@ | |||||
| package model | package model | ||||
| type Floor struct { | type Floor struct { | ||||
| ID string `gorm:"unique;primaryKey"` | |||||
| Name string `json:"name"` | |||||
| FloorNumber int `json:"floornumber"` | |||||
| Image string `json:"image"` | |||||
| Description string `json:"description"` | |||||
| Scale int `json:"scale"` | |||||
| Building string `json:"building"` | |||||
| ID string `gorm:"unique;primaryKey"` | |||||
| Name string `json:"name"` | |||||
| FloorNumber int `json:"floornumber"` | |||||
| Image string `json:"image"` | |||||
| Description string `json:"description"` | |||||
| Scale float32 `json:"scale"` | |||||
| Building string `json:"building"` | |||||
| } | } | ||||
| @@ -151,9 +151,9 @@ func LocationToBeaconServiceAI(msg model.HTTPLocation, db *gorm.DB, writer *kafk | |||||
| func SendAlert(trackerId, alertType string, writer *kafka.Writer, ctx context.Context, db *gorm.DB) { | func SendAlert(trackerId, alertType string, writer *kafka.Writer, ctx context.Context, db *gorm.DB) { | ||||
| var existingAlert model.Alert | var existingAlert model.Alert | ||||
| result := db.Select("status").Where("tracker_id = ? AND type = ?", trackerId, alertType).Order("timestamp DESC").First(&existingAlert) | |||||
| result := db.Select("status").Where("tracker_id = ? AND type = ?", trackerId, alertType).Order("timestamp DESC").Limit(1).Find(&existingAlert) | |||||
| if result.Error == gorm.ErrRecordNotFound || existingAlert.Status == "resolved" { | |||||
| if result.RowsAffected == 0 || existingAlert.Status == "resolved" { | |||||
| alert := model.Alert{ | alert := model.Alert{ | ||||
| ID: uuid.New().String(), | ID: uuid.New().String(), | ||||
| TrackerID: trackerId, | TrackerID: trackerId, | ||||