package database import ( "encoding/json" "tomatentum.net/svg-templater/pkg/svg" ) const SVGTABLECREATE string = ` CREATE TABLE IF NOT EXISTS svg ( name varchar(16) PRIMARY KEY NOT NULL, templatekeys longtext NOT NULL );` const INSERTSVGSQL string = "INSERT INTO svg VALUES (?, ?);" const GETSPECIFICSVGSQL string = "SELECT * FROM svg WHERE name = ?;" const GETSVGSQL string = "SELECT * FROM svg;" func InsertSVG(data *svg.TemplateData) error { json, err := json.Marshal(data.TemplateKeys) if err != nil { return err } if _, err := database.Exec(INSERTSVGSQL, data.Id, string(json)); err != nil { return err } 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 }