Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
 
 
 
 

59 řádky
1.2 KiB

  1. package controller
  2. import (
  3. "context"
  4. "encoding/json"
  5. "fmt"
  6. "net/http"
  7. "github.com/AFASystems/presence/internal/pkg/model"
  8. "github.com/segmentio/kafka-go"
  9. "gorm.io/gorm"
  10. )
  11. func SettingsListController(db *gorm.DB) http.HandlerFunc {
  12. return func(w http.ResponseWriter, r *http.Request) {
  13. var settings []model.Settings
  14. db.Find(&settings)
  15. res, err := json.Marshal(settings)
  16. if err != nil {
  17. http.Error(w, err.Error(), 400)
  18. return
  19. }
  20. w.Write(res)
  21. }
  22. }
  23. func SettingsUpdateController(db *gorm.DB, writer *kafka.Writer, ctx context.Context) http.HandlerFunc {
  24. return func(w http.ResponseWriter, r *http.Request) {
  25. var updates map[string]any
  26. if err := json.NewDecoder(r.Body).Decode(&updates); err != nil {
  27. http.Error(w, "Invalid JSON", 400)
  28. return
  29. }
  30. fmt.Printf("updates: %+v\n", updates)
  31. if err := db.Model(&model.Settings{}).Where("id = ?", 1).Updates(updates).Error; err != nil {
  32. http.Error(w, err.Error(), 500)
  33. return
  34. }
  35. eMsg, err := json.Marshal(updates)
  36. if err != nil {
  37. http.Error(w, "Error in marshaling settings updates", 400)
  38. return
  39. }
  40. msg := kafka.Message{
  41. Value: eMsg,
  42. }
  43. fmt.Printf("Kafka message: %+v\n", eMsg)
  44. writer.WriteMessages(ctx, msg)
  45. w.Write([]byte("Settings updated"))
  46. }
  47. }