forked from tangled.org/core
Monorepo for Tangled — https://tangled.org
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) 15 if err != nil { 16 return nil, err 17 } 18 19 _, err = db.Exec(` 20 create table if not exists known_dids ( 21 did text primary key 22 ); 23 24 create table if not exists public_keys ( 25 id integer primary key autoincrement, 26 did text not null, 27 key text not null, 28 created text not null default (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')), 29 unique(did, key), 30 foreign key (did) references known_dids(did) on delete cascade 31 ); 32 33 create table if not exists repos ( 34 id integer primary key autoincrement, 35 did text not null, 36 name text not null, 37 description text not null, 38 created text not null default (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')), 39 unique(did, name) 40 ); 41 42 create table if not exists _jetstream ( 43 id integer primary key autoincrement, 44 last_time_us integer not null 45 ); 46 `) 47 if err != nil { 48 return nil, err 49 } 50 51 return &DB{db: db}, nil 52}