03396a9d18
- 后端新增批量删除提示词接口和实现 - 前端管理页面添加多选和批量删除功能 - 添加定时同步GitHub远程提示词源功能 - 新增系统设置中的提示词同步配置选项 - 更新文档说明新的批量操作和定时同步功能 - 添加相关的测试用例和依赖库
67 lines
1.6 KiB
Go
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
|
|
}
|