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) 15 if err != nil { 16 return nil, err 17 } 18 19 _, err = db.Exec(` 20 create table if not exists public_keys ( 21 id integer primary key autoincrement, 22 did text not null, 23 name text not null, 24 key text not null, 25 created timestamp default current_timestamp, 26 unique(did, name, key) 27 ); 28 create table if not exists users ( 29 id integer primary key autoincrement, 30 did text not null, 31 unique(did), 32 foreign key (did) references public_keys(did) on delete cascade 33 ); 34 create table if not exists repos ( 35 id integer primary key autoincrement, 36 did text not null, 37 name text not null, 38 description text not null, 39 created timestamp default current_timestamp, 40 unique(did, name) 41 ); 42 create table if not exists access_levels ( 43 id integer primary key autoincrement, 44 repo_id integer not null, 45 did text not null, 46 access text not null check (access in ('OWNER', 'WRITER')), 47 created timestamp default current_timestamp, 48 unique(repo_id, did), 49 foreign key (repo_id) references repos(id) on delete cascade 50 ); 51 `) 52 if err != nil { 53 return nil, err 54 } 55 56 return &DB{db: db}, nil 57}