You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
1.5 KiB
Go
69 lines
1.5 KiB
Go
package sqlite
|
|
|
|
import (
|
|
"time"
|
|
|
|
"git.phc.dm.unipi.it/phc/website/database"
|
|
"git.phc.dm.unipi.it/phc/website/util"
|
|
"github.com/jmoiron/sqlx"
|
|
)
|
|
|
|
type sqliteDBDispense struct{ *sqlx.DB }
|
|
|
|
var _ database.DBDispense = sqliteDBDispense{}
|
|
|
|
func (d sqliteDBDispense) Create(template database.Dispensa) (string, error) {
|
|
template.Id = "dispensa/" + util.GenerateRandomString(8)
|
|
template.CreatedAt = time.Now().Format(time.RFC3339)
|
|
|
|
if _, err := d.DB.NamedExec(`
|
|
INSERT INTO
|
|
dispense(id, created_at, owner_id, title, description)
|
|
VALUES
|
|
(:id, :created_at, :owner_id, :title, :description)
|
|
`, &template); err != nil {
|
|
return "", err
|
|
}
|
|
|
|
return template.Id, nil
|
|
}
|
|
|
|
func (d sqliteDBDispense) Get(id string) (database.Dispensa, error) {
|
|
var dispensa database.Dispensa
|
|
if err := d.DB.Get(&dispensa, `SELECT * FROM dispense WHERE id = ?`, id); err != nil {
|
|
return database.Dispensa{}, err
|
|
}
|
|
|
|
return dispensa, nil
|
|
}
|
|
|
|
func (d sqliteDBDispense) All() ([]database.Dispensa, error) {
|
|
var dispense []database.Dispensa
|
|
if err := d.DB.Select(&dispense, `SELECT * FROM dispense`); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return dispense, nil
|
|
}
|
|
|
|
func (d sqliteDBDispense) Update(dispensa database.Dispensa) error {
|
|
if _, err := d.DB.NamedExec(`
|
|
UPDATE
|
|
dispense
|
|
SET
|
|
owner_id = :owner_id
|
|
title = :title,
|
|
description = :description
|
|
WHERE
|
|
id = :id
|
|
`, &dispensa); err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (d sqliteDBDispense) Delete(id string) error {
|
|
panic("TODO: Not implemented")
|
|
}
|