Files
infinite-canvas/handler/admin.go
T
HouYunFei 499439d66b fix(handler): 统一错误处理并替换Next.js重写为路由处理器
- 将所有handler中的Fail函数调用替换为FailError以统一错误处理
- 添加FailError函数实现统一的错误日志记录和响应格式
- 移除Next.js配置中的rewrites并实现统一的API路由代理处理器
- 新增路由处理器支持长连接和大文件上传场景的代理转发
- 更新错误处理逻辑避免将内部错误详情暴露给前端用户
2026-05-22 14:15:45 +08:00

61 lines
1.4 KiB
Go

package handler
import (
"encoding/json"
"log"
"net/http"
"github.com/basketikun/infinite-canvas/model"
"github.com/basketikun/infinite-canvas/service"
)
type adminSyncRequest struct {
Category string `json:"category"`
}
func AdminPromptCategories(w http.ResponseWriter, r *http.Request) {
OK(w, service.ListPromptCategories())
}
func AdminPrompts(w http.ResponseWriter, r *http.Request) {
result, err := service.ListPrompts(parseQuery(r))
if err != nil {
FailError(w, err)
return
}
OK(w, result)
}
func AdminSavePrompt(w http.ResponseWriter, r *http.Request) {
var item model.Prompt
_ = json.NewDecoder(r.Body).Decode(&item)
result, err := service.SavePrompt(item)
if err != nil {
FailError(w, err)
return
}
OK(w, result)
}
func AdminDeletePrompt(w http.ResponseWriter, r *http.Request, id string) {
if err := service.DeletePrompt(id); err != nil {
FailError(w, err)
return
}
OK(w, true)
}
func AdminSyncPromptCategories(w http.ResponseWriter, r *http.Request) {
var request adminSyncRequest
_ = json.NewDecoder(r.Body).Decode(&request)
log.Printf("sync prompt category start category=%s", request.Category)
categories, err := service.SyncPromptCategory(request.Category)
if err != nil {
log.Printf("sync prompt category failed category=%s err=%v", request.Category, err)
FailError(w, err)
return
}
log.Printf("sync prompt category done category=%s", request.Category)
OK(w, categories)
}