Changeset 0.7.0 (#37)

This commit is contained in:
2026-02-21 12:43:33 +00:00
parent 925b70f98c
commit a95e246cd7
18 changed files with 1424 additions and 115 deletions

View File

@@ -4,6 +4,7 @@ import (
"encoding/json"
"math"
"net/http"
"strconv"
"strings"
"github.com/gin-gonic/gin"
@@ -488,6 +489,56 @@ func (h *AdminHandler) CreateGlobalConfig(c *gin.Context) {
c.JSON(http.StatusCreated, gin.H{"id": id, "message": "global config created"})
}
func (h *AdminHandler) UpdateGlobalConfig(c *gin.Context) {
configID := c.Param("id")
var req struct {
Name *string `json:"name"`
Endpoint *string `json:"endpoint"`
APIKey *string `json:"api_key"`
ModelDefault *string `json:"model_default"`
}
if err := c.ShouldBindJSON(&req); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
sets := []string{}
args := []interface{}{}
argN := 1
add := func(col string, val interface{}) {
sets = append(sets, col+" = $"+strconv.Itoa(argN))
args = append(args, val)
argN++
}
if req.Name != nil { add("name", *req.Name) }
if req.Endpoint != nil { add("endpoint", *req.Endpoint) }
if req.APIKey != nil && *req.APIKey != "" { add("api_key_encrypted", *req.APIKey) }
if req.ModelDefault != nil { add("model_default", *req.ModelDefault) }
if len(sets) == 0 {
c.JSON(http.StatusBadRequest, gin.H{"error": "no fields to update"})
return
}
sets = append(sets, "updated_at = NOW()")
args = append(args, configID)
query := "UPDATE api_configs SET " + strings.Join(sets, ", ") + " WHERE id = $" + strconv.Itoa(argN) + " AND user_id IS NULL"
result, err := database.DB.Exec(query, args...)
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": "failed to update config"})
return
}
rows, _ := result.RowsAffected()
if rows == 0 {
c.JSON(http.StatusNotFound, gin.H{"error": "global config not found"})
return
}
c.JSON(http.StatusOK, gin.H{"status": "updated"})
}
func (h *AdminHandler) DeleteGlobalConfig(c *gin.Context) {
configID := c.Param("id")