3588AdminBackend/internal/service/template.go
2026-01-10 21:30:28 +08:00

62 lines
1.2 KiB
Go

package service
import (
"encoding/json"
"os"
"path/filepath"
"3588AdminBackend/internal/config"
)
type Template struct {
Name string `json:"name"`
Schema interface{} `json:"schema"`
Body interface{} `json:"body"`
}
type TemplateService struct {
cfg *config.Config
}
func NewTemplateService(cfg *config.Config) *TemplateService {
return &TemplateService{cfg: cfg}
}
func (s *TemplateService) ListTemplates() ([]Template, error) {
files, err := os.ReadDir("templates")
if err != nil {
return nil, err
}
var list []Template
for _, f := range files {
if !f.IsDir() && filepath.Ext(f.Name()) == ".json" {
data, err := os.ReadFile(filepath.Join("templates", f.Name()))
if err != nil {
continue
}
var t Template
if err := json.Unmarshal(data, &t); err == nil {
if t.Name == "" {
t.Name = f.Name() // Fallback
}
list = append(list, t)
}
}
}
return list, nil
}
func (s *TemplateService) GetTemplate(name string) (*Template, error) {
path := filepath.Join("templates", name+".json")
data, err := os.ReadFile(path)
if err != nil {
return nil, err
}
var t Template
if err := json.Unmarshal(data, &t); err != nil {
return nil, err
}
return &t, nil
}