Files
memberApp/backend/user/settings.go
Adrian Zürcher a908db4f38 first commit
2025-10-12 14:56:18 +02:00

50 lines
1.1 KiB
Go

package user
import (
"backend/dbRequest"
"backend/models"
"database/sql"
"encoding/json"
"fmt"
"io"
"net/http"
"github.com/gin-gonic/gin"
)
func (um *UserManager) UpdateSettings(c *gin.Context) {
body, err := io.ReadAll(c.Request.Body)
if err != nil {
c.JSON(http.StatusBadRequest, models.NewJsonErrorResponse(err))
return
}
user := models.User{}
err = json.Unmarshal(body, &user)
if err != nil {
c.JSON(http.StatusBadRequest, models.NewJsonErrorResponse(err))
return
}
db, err := sql.Open(um.dbType, um.dbFile)
if dbRequest.CheckDBError(c, user.Name, err) {
return
}
defer db.Close()
jsonBytes, err := json.Marshal(user.Settings)
if err != nil {
c.JSON(http.StatusOK, models.NewJsonErrorMessageResponse(err.Error()))
return
}
if _, err := db.Exec(dbRequest.DBUpdateSettings, string(jsonBytes), user.Name); err != nil {
c.JSON(http.StatusBadRequest, models.NewJsonErrorResponse(err))
return
}
c.JSON(http.StatusOK, gin.H{
"message": fmt.Sprintf("user settings '%s' successfully updated", user.Name),
})
}