package controller import ( "context" "encoding/json" "net/http" "github.com/AFASystems/presence/internal/pkg/model" "github.com/segmentio/kafka-go" "gorm.io/gorm" ) func SettingsListController(db *gorm.DB) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { var settings []model.Settings db.Find(&settings) res, err := json.Marshal(settings) if err != nil { http.Error(w, err.Error(), 400) return } w.Write(res) } } func SettingsUpdateController(db *gorm.DB, writer *kafka.Writer, ctx context.Context) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { var updates map[string]any if err := json.NewDecoder(r.Body).Decode(&updates); err != nil { http.Error(w, "Invalid JSON", 400) return } if err := db.Model(&model.Settings{}).Where("id = ?", 1).Updates(updates).Error; err != nil { http.Error(w, err.Error(), 500) return } eMsg, err := json.Marshal(updates) if err != nil { http.Error(w, "Error in marshaling settings updates", 400) return } msg := kafka.Message{ Value: eMsg, } writer.WriteMessages(ctx, msg) w.Write([]byte("Settings updated")) } }