|
- 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"))
- }
- }
|