Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.
 
 
 
 

80 righe
2.0 KiB

  1. package apiclient
  2. import (
  3. "context"
  4. "crypto/tls"
  5. "fmt"
  6. "net/http"
  7. "github.com/AFASystems/presence/internal/pkg/config"
  8. "github.com/AFASystems/presence/internal/pkg/controller"
  9. "github.com/AFASystems/presence/internal/pkg/model"
  10. "github.com/segmentio/kafka-go"
  11. "gorm.io/gorm"
  12. "gorm.io/gorm/clause"
  13. )
  14. func UpdateDB(db *gorm.DB, ctx context.Context, cfg *config.Config, writer *kafka.Writer) error {
  15. tr := &http.Transport{
  16. TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
  17. }
  18. client := &http.Client{Transport: tr}
  19. token, err := GetToken(ctx, cfg, client)
  20. if err != nil {
  21. return err
  22. }
  23. trackers, err := GetTrackers(token, client)
  24. if err != nil {
  25. fmt.Printf("Error in getting trackers: %+v\n", err)
  26. }
  27. if err := controller.SendKafkaMessage(writer, &model.ApiUpdate{Method: "DELETE", MAC: "all"}, ctx); err != nil {
  28. fmt.Printf("Error in sending delete all from lookup message: %v", err)
  29. }
  30. for _, v := range trackers {
  31. apiUpdate := model.ApiUpdate{
  32. Method: "POST",
  33. ID: v.ID,
  34. MAC: v.MAC,
  35. }
  36. if err := controller.SendKafkaMessage(writer, &apiUpdate, ctx); err != nil {
  37. fmt.Printf("Error in sending POST kafka message: %v", err)
  38. }
  39. }
  40. gateways, err := GetGateways(token, client)
  41. if err != nil {
  42. fmt.Printf("Error in getting gateways: %+v\n", err)
  43. }
  44. zones, err := GetZones(token, client)
  45. if err != nil {
  46. fmt.Printf("Error in getting zones: %+v\n", err)
  47. }
  48. trackerZones, err := GetTrackerZones(token, client)
  49. if err != nil {
  50. fmt.Printf("Error in getting tracker zones: %+v\n", err)
  51. }
  52. db.Clauses(clause.OnConflict{
  53. Columns: []clause.Column{{Name: "id"}},
  54. UpdateAll: true,
  55. }).Create(&trackers)
  56. db.Clauses(clause.OnConflict{
  57. Columns: []clause.Column{{Name: "id"}},
  58. UpdateAll: true,
  59. }).Create(&gateways)
  60. db.Clauses(clause.OnConflict{
  61. Columns: []clause.Column{{Name: "id"}},
  62. UpdateAll: true,
  63. }).Create(&zones)
  64. db.Clauses(clause.OnConflict{
  65. Columns: []clause.Column{{Name: "id"}},
  66. UpdateAll: true,
  67. }).Create(&trackerZones)
  68. return nil
  69. }