Files
infinite-canvas/service/prompts.go
T
HouYunFei 472bf8b732 first commit
Co-Authored-By: Codex <noreply@openai.com>
2026-05-19 19:50:36 +08:00

60 lines
1.4 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 promptCategoryCodes(items []model.PromptCategory) []string {
codes := []string{}
for _, item := range items {
if item.Category != "" {
codes = append(codes, item.Category)
}
}
return codes
}