Files
HouYunFei 03396a9d18 feat(admin): 添加提示词批量删除和定时同步功能
- 后端新增批量删除提示词接口和实现
- 前端管理页面添加多选和批量删除功能
- 添加定时同步GitHub远程提示词源功能
- 新增系统设置中的提示词同步配置选项
- 更新文档说明新的批量操作和定时同步功能
- 添加相关的测试用例和依赖库
2026-05-22 16:01:00 +08:00

67 lines
1.6 KiB
Go

package service
import (
"time"
"github.com/basketikun/infinite-canvas/model"
"github.com/basketikun/infinite-canvas/repository"
)
func ListPrompts(q model.Query) (model.PromptList, error) {
items, total, err := repository.ListPrompts(q)
if err != nil {
return model.PromptList{}, err
}
tags, err := repository.ListPromptTags(q)
if err != nil {
return model.PromptList{}, err
}
categories := promptCategoryCodes(ListPromptCategories())
return model.PromptList{Items: items, Tags: tags, Categories: categories, Total: int(total)}, nil
}
func ListPromptCategories() []model.PromptCategory {
categories, _ := repository.ListPromptCategories()
return categories
}
func SavePrompt(item model.Prompt) (model.Prompt, error) {
now := time.Now().Format(time.RFC3339)
if item.Category == "" {
item.Category = repository.PromptCategories()[0].Category
}
if item.ID == "" {
item.ID = newID(item.Category)
item.CreatedAt = now
}
item.UpdatedAt = now
category, ok := repository.PromptCategoryByCode(item.Category)
if !ok {
category = repository.PromptCategories()[0]
item.Category = category.Category
}
item.GithubURL = ""
return repository.SavePrompt(item)
}
func DeletePrompt(id string) error {
return repository.DeletePrompt(id)
}
func DeletePrompts(ids []string) error {
if len(ids) == 0 {
return nil
}
return repository.DeletePrompts(ids)
}
func promptCategoryCodes(items []model.PromptCategory) []string {
codes := []string{}
for _, item := range items {
if item.Category != "" {
codes = append(codes, item.Category)
}
}
return codes
}