52 lines
1.1 kB
1
package db
2
3
import (
4
"database/sql"
5
6
_ "github.com/mattn/go-sqlite3"
7
)
8
9
type DB struct {
10
db *sql.DB
11
}
12
13
func 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
}
53