refactor: replace explicit fields with tag-based property system
This commit is contained in:
55
db/rel.go
55
db/rel.go
@@ -2,56 +2,33 @@ 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,
|
||||
)
|
||||
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 (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,
|
||||
)
|
||||
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 target string
|
||||
rows.Scan(&target)
|
||||
ids = append(ids, target)
|
||||
var i string
|
||||
rows.Scan(&i)
|
||||
ids = append(ids, i)
|
||||
}
|
||||
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
|
||||
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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user