working the dispense table and relative api route
parent
c7e33c8e72
commit
807a4c54ac
@ -0,0 +1,52 @@
|
|||||||
|
package sqlite
|
||||||
|
|
||||||
|
import (
|
||||||
|
"git.phc.dm.unipi.it/phc/website/database"
|
||||||
|
"github.com/jmoiron/sqlx"
|
||||||
|
)
|
||||||
|
|
||||||
|
type sqliteDBTags struct{ *sqlx.DB }
|
||||||
|
|
||||||
|
var _ database.DBDispensaTags = sqliteDBTags{}
|
||||||
|
|
||||||
|
func (t sqliteDBTags) Set(dispensaId string, tags []string) error {
|
||||||
|
tagsRows := []map[string]any{}
|
||||||
|
for _, t := range tags {
|
||||||
|
tagsRows = append(tagsRows, map[string]any{
|
||||||
|
"dispensa_id": dispensaId,
|
||||||
|
"name": t,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
tx, err := t.DB.Beginx()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if _, err := tx.Exec(`
|
||||||
|
DELETE FROM tags WHERE dispensa_id = ?
|
||||||
|
`, dispensaId); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if _, err := tx.NamedExec(`
|
||||||
|
INSERT INTO tags(dispensa_id, name) VALUES (:dispensa_id, :name)
|
||||||
|
`, tagsRows); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := tx.Commit(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t sqliteDBTags) Get(dispensaId string) ([]string, error) {
|
||||||
|
var tags []string
|
||||||
|
if err := t.DB.Select(&tags, `SELECT name FROM tags WHERE dispensa_id = ?`, dispensaId); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return tags, nil
|
||||||
|
}
|
Loading…
Reference in New Issue