Files
ax/db/rel.go

35 lines
996 B
Go

package db
import "axolotl/models"
func (db *DB) AddRel(f, t string, r models.RelType) error {
_, err := db.Exec("INSERT OR IGNORE INTO rels (from_id, to_id, rel_type) VALUES (?, ?, ?)", f, t, r)
return err
}
func (db *DB) RemoveRel(f, t string, r models.RelType) error {
_, err := db.Exec("DELETE FROM rels WHERE from_id = ? AND to_id = ? AND rel_type = ?", f, t, r)
return err
}
func getIDs(db *DB, q, id string, r models.RelType) ([]string, error) {
rows, err := db.Query(q, id, r)
if err != nil {
return nil, err
}
defer rows.Close()
var ids []string
for rows.Next() {
var i string
rows.Scan(&i)
ids = append(ids, i)
}
return ids, nil
}
func (db *DB) GetRelated(id string, r models.RelType) ([]string, error) {
return getIDs(db, "SELECT to_id FROM rels WHERE from_id = ? AND rel_type = ?", id, r)
}
func (db *DB) GetIncomingRels(id string, r models.RelType) ([]string, error) {
return getIDs(db, "SELECT from_id FROM rels WHERE to_id = ? AND rel_type = ?", id, r)
}