From 664ae1f7d39baf628332d81d15f3adbbfaf45bef Mon Sep 17 00:00:00 2001 From: Tueem Date: Wed, 27 May 2026 23:07:08 +0200 Subject: [PATCH] fix(page): fix AddPage not checking if the template actually existed. --- internal/database/svgdb.go | 13 +++++++++++++ pkg/svg/actions/page.go | 12 ++++++++++++ pkg/svg/actions/upload.go | 14 +++++++------- 3 files changed, 32 insertions(+), 7 deletions(-) diff --git a/internal/database/svgdb.go b/internal/database/svgdb.go index b256259..d5ac42d 100644 --- a/internal/database/svgdb.go +++ b/internal/database/svgdb.go @@ -15,6 +15,7 @@ const GETSPECIFICSVGSQL string = "SELECT * FROM svg WHERE id = ?;" const GETSVGSQL string = "SELECT * FROM svg;" const DELETESVGSQL string = "DELETE FROM svg WHERE id = ?;" const RENAMESVGSQL string = "UPDATE svg SET name = ? WHERE id = ?;" +const EXISTSSVGSQL string = "SELECT COUNT(*) FROM svg WHERE id = ?;" func InsertSVG(data *svg.TemplateData) error { if _, err := database.Exec(INSERTSVGSQL, data.Id, data.Name); err != nil { @@ -93,3 +94,15 @@ func RenameSvg(id string, name string) error { } return nil } + +func Exists(id string) (bool, error) { + res := database.QueryRow(EXISTSSVGSQL, id) + + var count int + + if err := res.Scan(&count); err != nil { + return false, err + } + + return count > 0, nil +} diff --git a/pkg/svg/actions/page.go b/pkg/svg/actions/page.go index f427272..33cc32a 100644 --- a/pkg/svg/actions/page.go +++ b/pkg/svg/actions/page.go @@ -2,6 +2,7 @@ package actions import ( "bytes" + "errors" "fmt" "io" "log" @@ -15,6 +16,17 @@ import ( const FILEFORMAT string = "%s-%d" func AddPage(id string, svgbuf []byte) (svg.TemplatePage, error) { + + exists, err := database.Exists(id) + + if err != nil { + return svg.TemplatePage{}, err + } + + if !exists { + return svg.TemplatePage{}, errors.New("Template does not exist.") + } + data := svg.TemplatePage{TemplateId: id} populateKeys(&data, svgbuf) diff --git a/pkg/svg/actions/upload.go b/pkg/svg/actions/upload.go index 66b0751..efbc864 100644 --- a/pkg/svg/actions/upload.go +++ b/pkg/svg/actions/upload.go @@ -10,11 +10,15 @@ import ( ) func Create(svgbufs [][]byte, name string) (svg.TemplateData, error) { - id := generateId() + data := svg.TemplateData{Id: generateId(), Name: name} + + if err := database.InsertSVG(&data); err != nil { + return svg.TemplateData{}, err + } pages := make([]svg.TemplatePage, len(svgbufs)) for i, pagebuf := range svgbufs { - page, err := AddPage(id, pagebuf) + page, err := AddPage(data.Id, pagebuf) if err != nil { return svg.TemplateData{}, err @@ -23,11 +27,7 @@ func Create(svgbufs [][]byte, name string) (svg.TemplateData, error) { pages[i] = page } - data := svg.TemplateData{Id: id, Name: name, Pages: pages} - - if err := database.InsertSVG(&data); err != nil { - return svg.TemplateData{}, err - } + data.Pages = pages log.Println("Created SVG Template " + data.Id) return data, nil