From 4af31f22767572dc801899ec52c9ce559aa2e3c0 Mon Sep 17 00:00:00 2001 From: Anirudh Oppiliappan Date: Sat, 14 Jun 2025 10:43:12 +0300 Subject: [PATCH] spindle/db: add _jetstream and known_dids helpers Change-Id: tlxunysxvxwkqknrmxymlwolpxxquxsr Signed-off-by: Anirudh Oppiliappan --- spindle/db/db.go | 5 +++++ spindle/db/known_dids.go | 44 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 spindle/db/known_dids.go diff --git a/spindle/db/db.go b/spindle/db/db.go index 1e321a5..df6eac3 100644 --- a/spindle/db/db.go +++ b/spindle/db/db.go @@ -26,6 +26,11 @@ func Make(dbPath string) (*DB, error) { pragma auto_vacuum = incremental; pragma busy_timeout = 5000; + create table if not exists _jetstream ( + id integer primary key autoincrement, + last_time_us integer not null + ); + create table if not exists known_dids ( did text primary key ); diff --git a/spindle/db/known_dids.go b/spindle/db/known_dids.go new file mode 100644 index 0000000..8acdb69 --- /dev/null +++ b/spindle/db/known_dids.go @@ -0,0 +1,44 @@ +package db + +func (d *DB) AddDid(did string) error { + _, err := d.Exec(`insert or ignore into known_dids (did) values (?)`, did) + return err +} + +func (d *DB) RemoveDid(did string) error { + _, err := d.Exec(`delete from known_dids where did = ?`, did) + return err +} + +func (d *DB) GetAllDids() ([]string, error) { + var dids []string + + rows, err := d.Query(`select did from known_dids`) + if err != nil { + return nil, err + } + defer rows.Close() + + for rows.Next() { + var did string + if err := rows.Scan(&did); err != nil { + return nil, err + } + dids = append(dids, did) + } + + if err := rows.Err(); err != nil { + return nil, err + } + + return dids, nil +} + +func (d *DB) HasKnownDids() bool { + var count int + err := d.QueryRow(`select count(*) from known_dids`).Scan(&count) + if err != nil { + return false + } + return count > 0 +} -- 2.43.0