package svgtemplate import ( "encoding/json" "fmt" "os" "path/filepath" "time" "github.com/google/uuid" "printer.backend/internal/model" ) // WriteMeta writes item metadata next to the SVG in OutputDir. func WriteMeta(svgBasename string, spec model.ItemSpec, name string) (model.Item, error) { if err := os.MkdirAll(OutputDir, 0o755); err != nil { return model.Item{}, err } base := filepath.Base(filepath.Clean(svgBasename)) item := model.Item{ ID: uuid.NewString(), Name: name, Spec: spec, SVGTemplate: base, CreatedAt: time.Now().UTC(), } metaPath := filepath.Join(OutputDir, model.MetaFilename(base)) data, err := json.MarshalIndent(item, "", " ") if err != nil { return model.Item{}, err } if err := os.WriteFile(metaPath, data, 0o644); err != nil { return model.Item{}, fmt.Errorf("write meta: %w", err) } return item, nil }