109 lines
2.2 KiB
Go
109 lines
2.2 KiB
Go
package database
|
|
|
|
import (
|
|
"tomatentum.net/svg-templater/pkg/svg"
|
|
)
|
|
|
|
const SVGTABLECREATE string = `
|
|
CREATE TABLE IF NOT EXISTS svg (
|
|
id varchar(16) PRIMARY KEY NOT NULL,
|
|
name varchar(32)
|
|
);`
|
|
|
|
const INSERTSVGSQL string = "INSERT INTO svg VALUES (?, ?);"
|
|
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 {
|
|
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
|
|
name string
|
|
)
|
|
if err := result.Scan(&id, &name); err != nil {
|
|
return nil, err
|
|
}
|
|
pages, err := GetSVGPages(id)
|
|
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
templates = append(templates, svg.TemplateData{Id: id, Name: name, Pages: pages})
|
|
}
|
|
|
|
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 name string
|
|
if err := result.Scan(&id, &name); err != nil {
|
|
return svg.TemplateData{}, err
|
|
}
|
|
|
|
pages, err := GetSVGPages(id)
|
|
|
|
if err != nil {
|
|
return svg.TemplateData{}, err
|
|
}
|
|
return svg.TemplateData{Id: id, Name: name, Pages: pages}, nil
|
|
}
|
|
|
|
func DeleteSvg(id string) (bool, error) {
|
|
res, err := database.Exec(DELETESVGSQL, id)
|
|
if err != nil {
|
|
return false, err
|
|
}
|
|
num, err := res.RowsAffected()
|
|
if err != nil {
|
|
return false, err
|
|
}
|
|
|
|
if num == 0 {
|
|
return false, nil
|
|
}
|
|
return DeleteAllSVGPages(id)
|
|
}
|
|
|
|
func RenameSvg(id string, name string) error {
|
|
_, err := database.Exec(RENAMESVGSQL, name, id)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
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
|
|
}
|