From 7c6d8f420671b08a54a0ce8ae865a914b1105775 Mon Sep 17 00:00:00 2001 From: Tueem Date: Wed, 4 Feb 2026 12:53:00 +0100 Subject: [PATCH] feat(template): add public storage and temp file method --- pkg/svg/storage.go | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/pkg/svg/storage.go b/pkg/svg/storage.go index 0531469..b3349f7 100644 --- a/pkg/svg/storage.go +++ b/pkg/svg/storage.go @@ -10,12 +10,46 @@ import ( type SvgStorage interface { Create(id string, svg io.Reader) (string, error) Get(id string) (io.Reader, error) + CreateTemp(data io.Reader, filetype string) (string, error) + CreatePublic(data io.Reader, filetype string) (string, error) } +var _ SvgStorage = FileSvgStorage{} + type FileSvgStorage struct { basepath string } +func (f FileSvgStorage) CreatePublic(data io.Reader, filetype string) (string, error) { + path := filepath.Join(f.basepath, "public") + if err := os.Mkdir(path, 0755); err != nil { + return "", err + } + + file, err := os.CreateTemp(path, "*."+filetype) + if err != nil { + return "", err + } + defer file.Close() + + return file.Name(), nil +} + +func (f FileSvgStorage) CreateTemp(data io.Reader, filetype string) (string, error) { + path := filepath.Join(f.basepath, "temp") + if err := os.Mkdir(path, 0755); err != nil { + return "", err + } + + file, err := os.CreateTemp(path, "*."+filetype) + if err != nil { + return "", err + } + defer file.Close() + + return file.Name(), nil +} + func NewFileStorage(path string) *FileSvgStorage { err := os.MkdirAll(path, 0755) if err != nil {