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 }