package db import ( "database/sql" "strings" _ "github.com/mattn/go-sqlite3" ) func New(dbPath string) (*sql.DB, error) { // https://github.com/mattn/go-sqlite3#connection-string opts := []string{ "_foreign_keys=1", "_journal_mode=WAL", "_synchronous=NORMAL", "_auto_vacuum=incremental", } return sql.Open("sqlite3", dbPath+"?"+strings.Join(opts, "&")) } func Init(d *sql.DB) error { _, err := d.Exec(` create table if not exists _jetstream ( id integer primary key autoincrement, last_time_us integer not null ); create table if not exists events ( rkey text not null, nsid text not null, event text not null, -- json created integer not null -- unix nanos ); create table if not exists users ( id integer primary key autoincrement, did text not null unique, created text not null default (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')) ); create table if not exists public_keys ( id integer primary key autoincrement, did text not null, key text not null, created text not null default (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')), unique(did, key) ); `) return err }