58 lines
1.2 KiB
Go
58 lines
1.2 KiB
Go
package db
|
|
|
|
import "axolotl/models"
|
|
|
|
func (db *DB) AddRel(fromID, toID string, relType models.RelType) error {
|
|
_, err := db.Exec(
|
|
"INSERT OR IGNORE INTO rels (from_id, to_id, rel_type) VALUES (?, ?, ?)",
|
|
fromID, toID, relType,
|
|
)
|
|
return err
|
|
}
|
|
|
|
func (db *DB) RemoveRel(fromID, toID string, relType models.RelType) error {
|
|
_, err := db.Exec(
|
|
"DELETE FROM rels WHERE from_id = ? AND to_id = ? AND rel_type = ?",
|
|
fromID, toID, relType,
|
|
)
|
|
return err
|
|
}
|
|
|
|
func (db *DB) GetRelated(id string, relType models.RelType) ([]string, error) {
|
|
rows, err := db.Query(
|
|
"SELECT to_id FROM rels WHERE from_id = ? AND rel_type = ?",
|
|
id, relType,
|
|
)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
|
|
var ids []string
|
|
for rows.Next() {
|
|
var target string
|
|
rows.Scan(&target)
|
|
ids = append(ids, target)
|
|
}
|
|
return ids, nil
|
|
}
|
|
|
|
func (db *DB) GetIncomingRels(id string, relType models.RelType) ([]string, error) {
|
|
rows, err := db.Query(
|
|
"SELECT from_id FROM rels WHERE to_id = ? AND rel_type = ?",
|
|
id, relType,
|
|
)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
|
|
var ids []string
|
|
for rows.Next() {
|
|
var source string
|
|
rows.Scan(&source)
|
|
ids = append(ids, source)
|
|
}
|
|
return ids, nil
|
|
}
|