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 Make(dbPath string) (*DB, error) { 14 db, err := sql.Open("sqlite3", dbPath) 15 if err != nil { 16 return nil, err 17 } 18 _, err = db.Exec(` 19 pragma journal_mode = WAL; 20 pragma synchronous = normal; 21 pragma foreign_keys = on; 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 registrations ( 29 id integer primary key autoincrement, 30 domain text not null unique, 31 did text not null, 32 secret text not null, 33 created text not null default (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')), 34 registered text 35 ); 36 create table if not exists public_keys ( 37 id integer primary key autoincrement, 38 did text not null, 39 name text not null, 40 key text not null, 41 created text not null default (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')), 42 unique(did, name, key) 43 ); 44 create table if not exists repos ( 45 id integer primary key autoincrement, 46 did text not null, 47 name text not null, 48 knot text not null, 49 rkey text not null, 50 created text not null default (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')), 51 unique(did, name, knot, rkey) 52 ); 53 create table if not exists collaborators ( 54 id integer primary key autoincrement, 55 did text not null, 56 repo integer not null, 57 foreign key (repo) references repos(id) on delete cascade 58 ); 59 create table if not exists follows ( 60 user_did text not null, 61 subject_did text not null, 62 at_uri text not null, 63 followed_at text not null default (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')), 64 primary key (user_did, subject_did), 65 check (user_did <> subject_did) 66 ); 67 create table if not exists _jetstream ( 68 id integer primary key autoincrement, 69 last_time_us integer not null 70 ); 71 `) 72 if err != nil { 73 return nil, err 74 } 75 return &DB{db: db}, nil 76}