472bf8b732
Co-Authored-By: Codex <noreply@openai.com>
61 lines
1.4 KiB
Go
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 {
|
|
Fail(w, err.Error())
|
|
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 {
|
|
Fail(w, err.Error())
|
|
return
|
|
}
|
|
OK(w, result)
|
|
}
|
|
|
|
func AdminDeletePrompt(w http.ResponseWriter, r *http.Request, id string) {
|
|
if err := service.DeletePrompt(id); err != nil {
|
|
Fail(w, err.Error())
|
|
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)
|
|
Fail(w, err.Error())
|
|
return
|
|
}
|
|
log.Printf("sync prompt category done category=%s", request.Category)
|
|
OK(w, categories)
|
|
}
|