44 lines
866 B
Go
44 lines
866 B
Go
package actions
|
|
|
|
import (
|
|
"crypto/rand"
|
|
"encoding/hex"
|
|
"log"
|
|
|
|
"tomatentum.net/svg-templater/internal/database"
|
|
"tomatentum.net/svg-templater/pkg/svg"
|
|
)
|
|
|
|
func Create(svgbufs [][]byte, name string) (svg.TemplateData, error) {
|
|
id := generateId()
|
|
|
|
pages := make([]svg.TemplatePage, len(svgbufs))
|
|
for i, pagebuf := range svgbufs {
|
|
page, err := AddPage(id, pagebuf)
|
|
|
|
if err != nil {
|
|
return svg.TemplateData{}, err
|
|
}
|
|
|
|
pages[i] = page
|
|
}
|
|
|
|
data := svg.TemplateData{Id: id, Name: name, Pages: pages}
|
|
|
|
if err := database.InsertSVG(&data); err != nil {
|
|
return svg.TemplateData{}, err
|
|
}
|
|
|
|
log.Println("Created SVG Template " + data.Id)
|
|
return data, nil
|
|
}
|
|
|
|
func generateId() string {
|
|
token := make([]byte, 16)
|
|
if _, err := rand.Read(token); err != nil {
|
|
log.Fatal("Failed to generate Token:\n", err)
|
|
return ""
|
|
}
|
|
return hex.EncodeToString(token)
|
|
}
|