this repo has no description
1package db 2 3import ( 4 "database/sql" 5 6 _ "github.com/mattn/go-sqlite3" 7) 8 9type DB struct { 10 db *sql.DB 11} 12 13func Setup(dbPath string) (*DB, error) { 14 db, err := sql.Open("sqlite3", dbPath+"?_foreign_keys=1") 15 if err != nil { 16 return nil, err 17 } 18 19 _, err = db.Exec(` 20 pragma journal_mode = WAL; 21 pragma synchronous = normal; 22 pragma temp_store = memory; 23 pragma mmap_size = 30000000000; 24 pragma page_size = 32768; 25 pragma auto_vacuum = incremental; 26 pragma busy_timeout = 5000; 27 28 create table if not exists known_dids ( 29 did text primary key 30 ); 31 32 create table if not exists public_keys ( 33 id integer primary key autoincrement, 34 did text not null, 35 key text not null, 36 created text not null default (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')), 37 unique(did, key), 38 foreign key (did) references known_dids(did) on delete cascade 39 ); 40 41 create table if not exists _jetstream ( 42 id integer primary key autoincrement, 43 last_time_us integer not null 44 ); 45 46 create table if not exists events ( 47 rkey text not null, 48 nsid text not null, 49 event text not null, -- json 50 created integer not null default (strftime('%s', 'now')), 51 primary key (rkey, nsid) 52 ); 53 `) 54 if err != nil { 55 return nil, err 56 } 57 58 return &DB{db: db}, nil 59}