Skip to main content

max / makenotwork

2.2 KB · 71 lines History Blame Raw
1 -- Sando v0 schema.
2 -- Tiers and nodes are modeled as rows so topology changes are config edits,
3 -- not schema migrations. The daemon syncs (tiers, nodes) from sando.toml on
4 -- startup; mutable per-tier state (current_version, burn_in_started_at) lives
5 -- in tier_state and survives restarts.
6
7 CREATE TABLE tiers (
8 name TEXT PRIMARY KEY,
9 ord INTEGER NOT NULL,
10 provisioned INTEGER NOT NULL DEFAULT 0,
11 canary TEXT NOT NULL DEFAULT 'sequential'
12 );
13
14 CREATE TABLE nodes (
15 name TEXT PRIMARY KEY,
16 tier TEXT NOT NULL REFERENCES tiers(name),
17 ssh_target TEXT NOT NULL,
18 release_root TEXT NOT NULL
19 );
20
21 CREATE INDEX nodes_by_tier ON nodes(tier);
22
23 CREATE TABLE versions (
24 version TEXT PRIMARY KEY,
25 git_sha TEXT NOT NULL,
26 built_at TEXT NOT NULL,
27 artifact_path TEXT NOT NULL
28 );
29
30 CREATE TABLE deploys (
31 id INTEGER PRIMARY KEY AUTOINCREMENT,
32 version TEXT NOT NULL REFERENCES versions(version),
33 tier TEXT NOT NULL REFERENCES tiers(name),
34 node TEXT REFERENCES nodes(name),
35 started_at TEXT NOT NULL,
36 finished_at TEXT,
37 outcome TEXT NOT NULL DEFAULT 'in_progress',
38 hotfix INTEGER NOT NULL DEFAULT 0,
39 reset_burn_in INTEGER NOT NULL DEFAULT 0
40 );
41
42 CREATE INDEX deploys_by_tier_version ON deploys(tier, version);
43
44 CREATE TABLE gate_runs (
45 id INTEGER PRIMARY KEY AUTOINCREMENT,
46 version TEXT NOT NULL REFERENCES versions(version),
47 tier TEXT NOT NULL REFERENCES tiers(name),
48 gate_kind TEXT NOT NULL,
49 started_at TEXT NOT NULL,
50 finished_at TEXT,
51 passed INTEGER,
52 detail TEXT
53 );
54
55 CREATE INDEX gate_runs_lookup ON gate_runs(tier, version, gate_kind);
56
57 CREATE TABLE tier_state (
58 tier TEXT PRIMARY KEY REFERENCES tiers(name),
59 current_version TEXT REFERENCES versions(version),
60 previous_version TEXT REFERENCES versions(version),
61 burn_in_started_at TEXT
62 );
63
64 CREATE TABLE backups (
65 id INTEGER PRIMARY KEY AUTOINCREMENT,
66 fetched_at TEXT NOT NULL,
67 source TEXT NOT NULL,
68 local_path TEXT NOT NULL,
69 byte_size INTEGER
70 );
71