Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 
 

54 lignes
1.1 KiB

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