39 lines
897 B
Go

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
}