|
- package apiclient
-
- import (
- "context"
- "crypto/tls"
- "fmt"
- "net/http"
-
- "github.com/AFASystems/presence/internal/pkg/config"
- "github.com/AFASystems/presence/internal/pkg/controller"
- "github.com/AFASystems/presence/internal/pkg/model"
- "github.com/segmentio/kafka-go"
- "gorm.io/gorm"
- "gorm.io/gorm/clause"
- )
-
- func UpdateDB(db *gorm.DB, ctx context.Context, cfg *config.Config, writer *kafka.Writer) error {
- tr := &http.Transport{
- TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
- }
- client := &http.Client{Transport: tr}
-
- token, err := GetToken(ctx, cfg, client)
- if err != nil {
- return err
- }
- trackers, err := GetTrackers(token, client)
- if err != nil {
- fmt.Printf("Error in getting trackers: %+v\n", err)
- }
-
- if err := controller.SendKafkaMessage(writer, &model.ApiUpdate{Method: "DELETE", MAC: "all"}, ctx); err != nil {
- fmt.Printf("Error in sending delete all from lookup message: %v", err)
- }
-
- for _, v := range trackers {
- apiUpdate := model.ApiUpdate{
- Method: "POST",
- ID: v.ID,
- MAC: v.MAC,
- }
-
- if err := controller.SendKafkaMessage(writer, &apiUpdate, ctx); err != nil {
- fmt.Printf("Error in sending POST kafka message: %v", err)
- }
- }
-
- gateways, err := GetGateways(token, client)
- if err != nil {
- fmt.Printf("Error in getting gateways: %+v\n", err)
- }
- zones, err := GetZones(token, client)
- if err != nil {
- fmt.Printf("Error in getting zones: %+v\n", err)
- }
- trackerZones, err := GetTrackerZones(token, client)
- if err != nil {
- fmt.Printf("Error in getting tracker zones: %+v\n", err)
- }
-
- db.Clauses(clause.OnConflict{
- Columns: []clause.Column{{Name: "id"}},
- UpdateAll: true,
- }).Create(&trackers)
- db.Clauses(clause.OnConflict{
- Columns: []clause.Column{{Name: "id"}},
- UpdateAll: true,
- }).Create(&gateways)
- db.Clauses(clause.OnConflict{
- Columns: []clause.Column{{Name: "id"}},
- UpdateAll: true,
- }).Create(&zones)
- db.Clauses(clause.OnConflict{
- Columns: []clause.Column{{Name: "id"}},
- UpdateAll: true,
- }).Create(&trackerZones)
-
- return nil
- }
|