spindle/db: add _jetstream and known_dids helpers #244

merged
opened by anirudh.fi targeting master from push-tlxunysxvxwk
Changed files
+49
spindle
+5
spindle/db/db.go
···
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
);
+44
spindle/db/known_dids.go
···
+
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
+
}