diff --git a/internal/database/svgdb.go b/internal/database/svgdb.go index d91f2ee..ef4f941 100644 --- a/internal/database/svgdb.go +++ b/internal/database/svgdb.go @@ -13,6 +13,8 @@ const SVGTABLECREATE string = ` );` const INSERTSVGSQL string = "INSERT INTO svg VALUES (?, ?);" +const GETSPECIFICSVGSQL string = "SELECT * FROM svg WHERE id = ?;" +const GETSVGSQL string = "SELECT * FROM svg;" func InsertSVG(data *svg.TemplateData) error { json, err := json.Marshal(data.TemplateKeys) @@ -26,3 +28,47 @@ func InsertSVG(data *svg.TemplateData) error { return nil } + +func GetSVG() ([]svg.TemplateData, error) { + result, err := database.Query(GETSVGSQL) + if err != nil { + return nil, err + } + defer result.Close() + templates := make([]svg.TemplateData, 0) + for result.Next() { + var ( + id string + keysjson []byte + keys []string + ) + if err := result.Scan(&id, &keysjson); err != nil { + return nil, err + } + if err := json.Unmarshal(keysjson, &keys); err != nil { + return nil, err + } + templates = append(templates, svg.TemplateData{Id: id, TemplateKeys: keys}) + } + + if err := result.Err(); err != nil { + return nil, err + } + return templates, nil +} + +func GetSpecificSVG(id string) (svg.TemplateData, error) { + result := database.QueryRow(GETSPECIFICSVGSQL, id) + + var ( + keysjson []byte + keys []string + ) + if err := result.Scan(&id, &keysjson); err != nil { + return svg.TemplateData{}, err + } + if err := json.Unmarshal(keysjson, &keys); err != nil { + return svg.TemplateData{}, err + } + return svg.TemplateData{Id: id, TemplateKeys: keys}, nil +}