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 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 create table if not exists registrations ( 20 id integer primary key autoincrement, 21 domain text not null unique, 22 did text not null, 23 secret text not null, 24 created text not null default (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')), 25 registered text 26 ); 27 create table if not exists public_keys ( 28 id integer primary key autoincrement, 29 did text not null, 30 name text not null, 31 key text not null, 32 created text not null default (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')), 33 unique(did, name, key) 34 ); 35 create table if not exists repos ( 36 id integer primary key autoincrement, 37 did text not null, 38 name text not null, 39 knot text not null, 40 created text not null default (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')), 41 unique(did, name, knot) 42 ); 43 create table if not exists follows ( 44 user_did text not null, 45 subject_did text not null, 46 followed_at text not null default (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')), 47 primary key (user_did, subject_did), 48 check (user_did <> subject_did) 49 ); 50 `) 51 if err != nil { 52 return nil, err 53 } 54 return &DB{db: db}, nil 55}