58 lines
1.5 KiB
Go
58 lines
1.5 KiB
Go
package fic
|
|
|
|
import (
|
|
"strings"
|
|
)
|
|
|
|
// GetTags returns tags associated with this exercice.
|
|
func (e *Exercice) GetTags() (tags []string, err error) {
|
|
if rows, errr := DBQuery("SELECT tag FROM exercice_tags WHERE id_exercice = ?", e.Id); errr != nil {
|
|
return nil, errr
|
|
} else {
|
|
defer rows.Close()
|
|
|
|
tags = make([]string, 0)
|
|
for rows.Next() {
|
|
var t string
|
|
if err = rows.Scan(&t); err != nil {
|
|
return
|
|
}
|
|
tags = append(tags, t)
|
|
}
|
|
err = rows.Err()
|
|
return
|
|
}
|
|
}
|
|
|
|
// AddTag assign a new tag to the exercice and registers it into the database.
|
|
func (e *Exercice) AddTag(tag string) (string, error) {
|
|
tag = strings.Title(tag)
|
|
if _, err := DBExec("INSERT INTO exercice_tags (id_exercice, tag) VALUES (?, ?)", e.Id, tag); err != nil {
|
|
return "", err
|
|
} else {
|
|
return tag, nil
|
|
}
|
|
}
|
|
|
|
// DeleteTag delete a tag assigned to the current exercice from the database.
|
|
func (e *Exercice) DeleteTag(tag string) (int64, error) {
|
|
if res, err := DBExec("DELETE FROM exercice_tags WHERE id_exercice = ? AND tag = ?", e.Id, tag); err != nil {
|
|
return 0, err
|
|
} else if nb, err := res.RowsAffected(); err != nil {
|
|
return 0, err
|
|
} else {
|
|
return nb, err
|
|
}
|
|
}
|
|
|
|
// WipeTags delete all tag assigned to the current exercice from the database.
|
|
func (e *Exercice) WipeTags() (int64, error) {
|
|
if res, err := DBExec("DELETE FROM exercice_tags WHERE id_exercice = ?", e.Id); err != nil {
|
|
return 0, err
|
|
} else if nb, err := res.RowsAffected(); err != nil {
|
|
return 0, err
|
|
} else {
|
|
return nb, err
|
|
}
|
|
}
|