code.pablomurad.com

patchwork

Publishes the revisions of your pages as a feed, with notes and readable diffs, written in Go

internal/store/schema.go raw
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package store

// migrations[i] moves the schema from user_version i to i+1. Never edit a
// migration that has shipped; append a new one.
var migrations = []string{
	`
CREATE TABLE pages (
  id            INTEGER PRIMARY KEY,
  uid           TEXT NOT NULL UNIQUE,
  source        TEXT NOT NULL,
  path          TEXT NOT NULL,
  slug          TEXT NOT NULL,
  original_date TEXT NOT NULL DEFAULT '',
  first_seen_at TEXT NOT NULL,
  removed_at    TEXT,
  missing_scans INTEGER NOT NULL DEFAULT 0,
  UNIQUE (source, path)
);
CREATE INDEX pages_slug ON pages (slug);

CREATE TABLE snapshots (
  id               INTEGER PRIMARY KEY,
  page_id          INTEGER NOT NULL REFERENCES pages (id),
  seq              INTEGER NOT NULL,
  observed_at      TEXT NOT NULL,
  source_mtime     TEXT,
  source_ref       TEXT NOT NULL DEFAULT '',
  raw_hash         TEXT NOT NULL,
  content_hash     TEXT NOT NULL,
  raw              TEXT NOT NULL,
  frontmatter_json TEXT NOT NULL,
  title            TEXT NOT NULL DEFAULT '',
  note             TEXT NOT NULL DEFAULT '',
  kind             TEXT NOT NULL DEFAULT '',
  maturity         TEXT NOT NULL DEFAULT '',
  UNIQUE (page_id, seq)
);

CREATE TABLE revisions (
  id            INTEGER PRIMARY KEY,
  page_id       INTEGER NOT NULL REFERENCES pages (id),
  number        INTEGER NOT NULL,
  snapshot_id   INTEGER NOT NULL REFERENCES snapshots (id),
  note          TEXT NOT NULL DEFAULT '',
  kind          TEXT NOT NULL DEFAULT '',
  maturity      TEXT NOT NULL DEFAULT '',
  published_at  TEXT NOT NULL,
  updated_at    TEXT NOT NULL,
  retracted_at  TEXT,
  diff_json     TEXT NOT NULL DEFAULT '',
  diff_version  INTEGER NOT NULL DEFAULT 0,
  words_added   INTEGER NOT NULL DEFAULT 0,
  words_removed INTEGER NOT NULL DEFAULT 0,
  UNIQUE (page_id, number)
);
CREATE INDEX revisions_feed ON revisions (published_at DESC)
  WHERE number > 1 AND retracted_at IS NULL;

CREATE TABLE meta (
  key   TEXT PRIMARY KEY,
  value TEXT NOT NULL
);
`,
}