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}