this repo has no description
1package db
2
3import (
4 "database/sql"
5 "strings"
6
7 _ "github.com/mattn/go-sqlite3"
8)
9
10func New(dbPath string) (*sql.DB, error) {
11 // https://github.com/mattn/go-sqlite3#connection-string
12 opts := []string{
13 "_foreign_keys=1",
14 "_journal_mode=WAL",
15 "_synchronous=NORMAL",
16 "_auto_vacuum=incremental",
17 }
18
19 return sql.Open("sqlite3", dbPath+"?"+strings.Join(opts, "&"))
20}
21
22func Init(d *sql.DB) error {
23 _, err := d.Exec(`
24 create table if not exists _jetstream (
25 id integer primary key autoincrement,
26 last_time_us integer not null
27 );
28
29 create table if not exists events (
30 rkey text not null,
31 nsid text not null,
32 event text not null, -- json
33 created integer not null -- unix nanos
34 );
35
36 create table if not exists users (
37 id integer primary key autoincrement,
38 did text not null unique,
39 created text not null default (strftime('%Y-%m-%dT%H:%M:%SZ', 'now'))
40 );
41
42 create table if not exists public_keys (
43 id integer primary key autoincrement,
44 did text not null,
45 key text not null,
46 created text not null default (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')),
47 unique(did, key)
48 );
49 `)
50
51 return err
52}