@hardkas/query-store 0.2.2-alpha → 0.3.0-alpha

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,195 @@
1
+ import { createRequire } from "node:module";
2
+ const require = createRequire(import.meta.url);
3
+ const { DatabaseSync } = require("node:sqlite");
4
+ import { HardkasError } from "@hardkas/core";
5
+ export class MigrationRunner {
6
+ db;
7
+ constructor(db) {
8
+ this.db = db;
9
+ }
10
+ /**
11
+ * Ensures the migration history table exists.
12
+ */
13
+ ensureHistoryTable() {
14
+ this.db.exec(`
15
+ CREATE TABLE IF NOT EXISTS hardkas_migrations (
16
+ version INTEGER PRIMARY KEY,
17
+ name TEXT NOT NULL,
18
+ checksum TEXT NOT NULL,
19
+ applied_at TEXT NOT NULL
20
+ );
21
+ `);
22
+ }
23
+ /**
24
+ * Fetches all applied migrations from the history table.
25
+ */
26
+ getAppliedMigrations() {
27
+ try {
28
+ const stmt = this.db.prepare("SELECT * FROM hardkas_migrations ORDER BY version ASC");
29
+ return stmt.all();
30
+ }
31
+ catch {
32
+ return [];
33
+ }
34
+ }
35
+ /**
36
+ * Applies pending migrations in order.
37
+ */
38
+ migrate(migrations) {
39
+ this.ensureHistoryTable();
40
+ const applied = this.getAppliedMigrations();
41
+ const appliedMap = new Map(applied.map(m => [m.version, m]));
42
+ // Check for checksum mismatches in already applied migrations
43
+ for (const m of migrations) {
44
+ const existing = appliedMap.get(m.version);
45
+ if (existing && existing.checksum !== m.checksum) {
46
+ throw new HardkasError("STORE_MIGRATION_CHECKSUM_MISMATCH", `Migration checksum mismatch for version ${m.version} (${m.name}). Expected ${m.checksum}, got ${existing.checksum}.`);
47
+ }
48
+ }
49
+ const pending = migrations
50
+ .filter(m => !appliedMap.has(m.version))
51
+ .sort((a, b) => a.version - b.version);
52
+ if (pending.length === 0) {
53
+ return { applied: 0, status: "ok" };
54
+ }
55
+ let appliedCount = 0;
56
+ for (const m of pending) {
57
+ try {
58
+ this.db.exec("BEGIN TRANSACTION;");
59
+ m.up(this.db);
60
+ const stmt = this.db.prepare("INSERT INTO hardkas_migrations (version, name, checksum, applied_at) VALUES (?, ?, ?, ?)");
61
+ stmt.run(m.version, m.name, m.checksum, new Date().toISOString());
62
+ this.db.exec("COMMIT;");
63
+ appliedCount++;
64
+ }
65
+ catch (e) {
66
+ this.db.exec("ROLLBACK;");
67
+ throw new HardkasError("STORE_MIGRATION_FAILED", `Failed to apply migration ${m.version} (${m.name}): ${e instanceof Error ? e.message : String(e)}`, { cause: e });
68
+ }
69
+ }
70
+ return { applied: appliedCount, status: "ok" };
71
+ }
72
+ /**
73
+ * Legacy bootstrap: if the DB is in a known state but has no migration history,
74
+ * we inject the history without running the 'up' logic.
75
+ */
76
+ bootstrapLegacy(knownVersion, migrations) {
77
+ const applied = this.getAppliedMigrations();
78
+ if (applied.length > 0)
79
+ return false; // Already has history
80
+ // Check if it's a known legacy state (e.g. has artifacts table)
81
+ const tables = this.db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='artifacts'").get();
82
+ if (!tables)
83
+ return false;
84
+ // It's a legacy DB. Inject history for migrations up to knownVersion.
85
+ this.ensureHistoryTable();
86
+ for (const m of migrations) {
87
+ if (m.version <= knownVersion) {
88
+ const stmt = this.db.prepare("INSERT INTO hardkas_migrations (version, name, checksum, applied_at) VALUES (?, ?, ?, ?)");
89
+ stmt.run(m.version, m.name, m.checksum, new Date().toISOString());
90
+ }
91
+ }
92
+ return true;
93
+ }
94
+ }
95
+ /**
96
+ * Registry of all query-store migrations.
97
+ * Version 1: Initial schema (Baseline v0.2-alpha).
98
+ */
99
+ export const MIGRATIONS = [
100
+ {
101
+ version: 1,
102
+ name: "initial_schema",
103
+ checksum: "hardkas_v1_baseline",
104
+ up: (db) => {
105
+ db.exec(`
106
+ CREATE TABLE IF NOT EXISTS metadata (
107
+ key TEXT PRIMARY KEY,
108
+ value TEXT NOT NULL
109
+ );
110
+
111
+ CREATE TABLE IF NOT EXISTS artifacts (
112
+ artifact_id TEXT PRIMARY KEY,
113
+ content_hash TEXT NOT NULL,
114
+ schema TEXT NOT NULL,
115
+ version TEXT NOT NULL,
116
+ kind TEXT NOT NULL,
117
+ mode TEXT NOT NULL DEFAULT 'unknown',
118
+ network_id TEXT NOT NULL,
119
+ tx_id TEXT,
120
+ created_at TEXT,
121
+ raw_json TEXT NOT NULL,
122
+ file_path TEXT,
123
+ file_mtime_ms INTEGER,
124
+ indexed_at TEXT
125
+ );
126
+
127
+ CREATE INDEX IF NOT EXISTS idx_artifacts_content_hash ON artifacts(content_hash);
128
+ CREATE INDEX IF NOT EXISTS idx_artifacts_schema ON artifacts(schema);
129
+ CREATE INDEX IF NOT EXISTS idx_artifacts_kind ON artifacts(kind);
130
+ CREATE INDEX IF NOT EXISTS idx_artifacts_mode ON artifacts(mode);
131
+ CREATE INDEX IF NOT EXISTS idx_artifacts_network_id ON artifacts(network_id);
132
+ CREATE INDEX IF NOT EXISTS idx_artifacts_tx_id ON artifacts(tx_id);
133
+ CREATE INDEX IF NOT EXISTS idx_artifacts_created_at ON artifacts(created_at);
134
+ CREATE INDEX IF NOT EXISTS idx_artifacts_file_path ON artifacts(file_path);
135
+
136
+ CREATE TABLE IF NOT EXISTS lineage_edges (
137
+ lineage_id TEXT NOT NULL,
138
+ parent_artifact_id TEXT NOT NULL,
139
+ child_artifact_id TEXT NOT NULL,
140
+ edge_kind TEXT NOT NULL,
141
+ created_at TEXT,
142
+ PRIMARY KEY (parent_artifact_id, child_artifact_id),
143
+ FOREIGN KEY (parent_artifact_id) REFERENCES artifacts(artifact_id) ON DELETE CASCADE,
144
+ FOREIGN KEY (child_artifact_id) REFERENCES artifacts(artifact_id) ON DELETE CASCADE
145
+ );
146
+
147
+ CREATE INDEX IF NOT EXISTS idx_lineage_parent ON lineage_edges(parent_artifact_id);
148
+ CREATE INDEX IF NOT EXISTS idx_lineage_child ON lineage_edges(child_artifact_id);
149
+ CREATE INDEX IF NOT EXISTS idx_lineage_id ON lineage_edges(lineage_id);
150
+
151
+ CREATE TABLE IF NOT EXISTS events (
152
+ event_id TEXT PRIMARY KEY,
153
+ kind TEXT NOT NULL,
154
+ domain TEXT NOT NULL,
155
+ timestamp TEXT,
156
+ workflow_id TEXT NOT NULL,
157
+ correlation_id TEXT NOT NULL,
158
+ causation_id TEXT,
159
+ tx_id TEXT,
160
+ artifact_id TEXT,
161
+ network_id TEXT NOT NULL,
162
+ raw_json TEXT NOT NULL,
163
+ file_path TEXT,
164
+ file_mtime_ms INTEGER,
165
+ indexed_at TEXT
166
+ );
167
+
168
+ CREATE INDEX IF NOT EXISTS idx_events_kind ON events(kind);
169
+ CREATE INDEX IF NOT EXISTS idx_events_domain ON events(domain);
170
+ CREATE INDEX IF NOT EXISTS idx_events_workflow_id ON events(workflow_id);
171
+ CREATE INDEX IF NOT EXISTS idx_events_correlation_id ON events(correlation_id);
172
+ CREATE INDEX IF NOT EXISTS idx_events_causation_id ON events(causation_id);
173
+ CREATE INDEX IF NOT EXISTS idx_events_tx_id ON events(tx_id);
174
+ CREATE INDEX IF NOT EXISTS idx_events_artifact_id ON events(artifact_id);
175
+ CREATE INDEX IF NOT EXISTS idx_events_network_id ON events(network_id);
176
+ CREATE INDEX IF NOT EXISTS idx_events_timestamp ON events(timestamp);
177
+ CREATE INDEX IF NOT EXISTS idx_events_file_path ON events(file_path);
178
+
179
+ CREATE TABLE IF NOT EXISTS traces (
180
+ trace_id TEXT PRIMARY KEY,
181
+ workflow_id TEXT UNIQUE NOT NULL,
182
+ root_event_id TEXT,
183
+ status TEXT NOT NULL,
184
+ started_at TEXT,
185
+ ended_at TEXT,
186
+ FOREIGN KEY (root_event_id) REFERENCES events(event_id) ON DELETE SET NULL
187
+ );
188
+
189
+ CREATE INDEX IF NOT EXISTS idx_traces_workflow_id ON traces(workflow_id);
190
+ CREATE INDEX IF NOT EXISTS idx_traces_status ON traces(status);
191
+ `);
192
+ }
193
+ }
194
+ ];
195
+ //# sourceMappingURL=migrations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../src/migrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAgB7C,MAAM,OAAO,eAAe;IACN;IAApB,YAAoB,EAAO;QAAP,OAAE,GAAF,EAAE,CAAK;IAAG,CAAC;IAE/B;;OAEG;IACI,kBAAkB;QACvB,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;;;;;;KAOZ,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACI,oBAAoB;QACzB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,uDAAuD,CAAC,CAAC;YACtF,OAAO,IAAI,CAAC,GAAG,EAA6B,CAAC;QAC/C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;OAEG;IACI,OAAO,CAAC,UAAuB;QACpC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE1B,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5C,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAE7D,8DAA8D;QAC9D,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC3C,IAAI,QAAQ,IAAI,QAAQ,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACjD,MAAM,IAAI,YAAY,CACpB,mCAAmC,EACnC,2CAA2C,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,QAAQ,SAAS,QAAQ,CAAC,QAAQ,GAAG,CACtH,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAG,UAAU;aACvB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;aACvC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;QAEzC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QACtC,CAAC;QAED,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;gBAEnC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAEd,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,0FAA0F,CAAC,CAAC;gBACzH,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;gBAElE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACxB,YAAY,EAAE,CAAC;YACjB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC1B,MAAM,IAAI,YAAY,CACpB,wBAAwB,EACxB,6BAA6B,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EACnG,EAAE,KAAK,EAAE,CAAC,EAAE,CACb,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACjD,CAAC;IAED;;;OAGG;IACI,eAAe,CAAC,YAAoB,EAAE,UAAuB;QAClE,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5C,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC,CAAC,sBAAsB;QAE5D,gEAAgE;QAChE,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,wEAAwE,CAAC,CAAC,GAAG,EAAE,CAAC;QAC/G,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAE1B,sEAAsE;QACtE,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;YAC3B,IAAI,CAAC,CAAC,OAAO,IAAI,YAAY,EAAE,CAAC;gBAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,0FAA0F,CAAC,CAAC;gBACzH,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAgB;IACrC;QACE,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,gBAAgB;QACtB,QAAQ,EAAE,qBAAqB;QAC/B,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;YACT,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAsFP,CAAC,CAAC;QACL,CAAC;KACF;CACF,CAAC"}
package/dist/schema.d.ts CHANGED
@@ -1,3 +1,21 @@
1
- export declare const SCHEMA_VERSION = 2;
2
- export declare const DDL = "\nCREATE TABLE IF NOT EXISTS metadata (\n key TEXT PRIMARY KEY,\n value TEXT NOT NULL\n);\n\nCREATE TABLE IF NOT EXISTS artifacts (\n artifact_id TEXT PRIMARY KEY,\n content_hash TEXT NOT NULL,\n schema TEXT NOT NULL,\n version TEXT NOT NULL,\n kind TEXT NOT NULL,\n network_id TEXT NOT NULL,\n tx_id TEXT,\n created_at TEXT,\n raw_json TEXT NOT NULL\n);\n\nCREATE INDEX IF NOT EXISTS idx_artifacts_content_hash ON artifacts(content_hash);\nCREATE INDEX IF NOT EXISTS idx_artifacts_schema ON artifacts(schema);\nCREATE INDEX IF NOT EXISTS idx_artifacts_kind ON artifacts(kind);\nCREATE INDEX IF NOT EXISTS idx_artifacts_network_id ON artifacts(network_id);\nCREATE INDEX IF NOT EXISTS idx_artifacts_tx_id ON artifacts(tx_id);\nCREATE INDEX IF NOT EXISTS idx_artifacts_created_at ON artifacts(created_at);\n\nCREATE TABLE IF NOT EXISTS lineage_edges (\n lineage_id TEXT NOT NULL,\n parent_artifact_id TEXT NOT NULL,\n child_artifact_id TEXT NOT NULL,\n edge_kind TEXT NOT NULL,\n created_at TEXT,\n PRIMARY KEY (parent_artifact_id, child_artifact_id),\n FOREIGN KEY (parent_artifact_id) REFERENCES artifacts(artifact_id),\n FOREIGN KEY (child_artifact_id) REFERENCES artifacts(artifact_id)\n);\n\nCREATE INDEX IF NOT EXISTS idx_lineage_parent ON lineage_edges(parent_artifact_id);\nCREATE INDEX IF NOT EXISTS idx_lineage_child ON lineage_edges(child_artifact_id);\nCREATE INDEX IF NOT EXISTS idx_lineage_id ON lineage_edges(lineage_id);\n\nCREATE TABLE IF NOT EXISTS events (\n event_id TEXT PRIMARY KEY,\n kind TEXT NOT NULL,\n domain TEXT NOT NULL,\n timestamp TEXT,\n workflow_id TEXT NOT NULL,\n correlation_id TEXT NOT NULL,\n causation_id TEXT,\n tx_id TEXT,\n artifact_id TEXT,\n network_id TEXT NOT NULL,\n raw_json TEXT NOT NULL\n);\n\nCREATE INDEX IF NOT EXISTS idx_events_kind ON events(kind);\nCREATE INDEX IF NOT EXISTS idx_events_domain ON events(domain);\nCREATE INDEX IF NOT EXISTS idx_events_workflow_id ON events(workflow_id);\nCREATE INDEX IF NOT EXISTS idx_events_correlation_id ON events(correlation_id);\nCREATE INDEX IF NOT EXISTS idx_events_causation_id ON events(causation_id);\nCREATE INDEX IF NOT EXISTS idx_events_tx_id ON events(tx_id);\nCREATE INDEX IF NOT EXISTS idx_events_artifact_id ON events(artifact_id);\nCREATE INDEX IF NOT EXISTS idx_events_network_id ON events(network_id);\nCREATE INDEX IF NOT EXISTS idx_events_timestamp ON events(timestamp);\n\nCREATE TABLE IF NOT EXISTS traces (\n trace_id TEXT PRIMARY KEY,\n workflow_id TEXT UNIQUE NOT NULL,\n root_event_id TEXT,\n status TEXT NOT NULL,\n started_at TEXT,\n ended_at TEXT,\n FOREIGN KEY (root_event_id) REFERENCES events(event_id)\n);\n\nCREATE INDEX IF NOT EXISTS idx_traces_workflow_id ON traces(workflow_id);\nCREATE INDEX IF NOT EXISTS idx_traces_status ON traces(status);\n";
1
+ export declare const SCHEMA_VERSION = 1;
2
+ export interface MetadataRow {
3
+ key: string;
4
+ value: string;
5
+ }
6
+ export interface ArtifactRow {
7
+ artifact_id: string;
8
+ content_hash: string;
9
+ schema: string;
10
+ version: string;
11
+ kind: string;
12
+ mode: string;
13
+ network_id: string;
14
+ tx_id?: string;
15
+ created_at?: string;
16
+ raw_json: string;
17
+ file_path?: string;
18
+ file_mtime_ms?: number;
19
+ indexed_at?: string;
20
+ }
3
21
  //# sourceMappingURL=schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,IAAI,CAAC;AAEhC,eAAO,MAAM,GAAG,iwFA4Ef,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,IAAI,CAAC;AAEhC,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
package/dist/schema.js CHANGED
@@ -1,79 +1,2 @@
1
- export const SCHEMA_VERSION = 2;
2
- export const DDL = `
3
- CREATE TABLE IF NOT EXISTS metadata (
4
- key TEXT PRIMARY KEY,
5
- value TEXT NOT NULL
6
- );
7
-
8
- CREATE TABLE IF NOT EXISTS artifacts (
9
- artifact_id TEXT PRIMARY KEY,
10
- content_hash TEXT NOT NULL,
11
- schema TEXT NOT NULL,
12
- version TEXT NOT NULL,
13
- kind TEXT NOT NULL,
14
- network_id TEXT NOT NULL,
15
- tx_id TEXT,
16
- created_at TEXT,
17
- raw_json TEXT NOT NULL
18
- );
19
-
20
- CREATE INDEX IF NOT EXISTS idx_artifacts_content_hash ON artifacts(content_hash);
21
- CREATE INDEX IF NOT EXISTS idx_artifacts_schema ON artifacts(schema);
22
- CREATE INDEX IF NOT EXISTS idx_artifacts_kind ON artifacts(kind);
23
- CREATE INDEX IF NOT EXISTS idx_artifacts_network_id ON artifacts(network_id);
24
- CREATE INDEX IF NOT EXISTS idx_artifacts_tx_id ON artifacts(tx_id);
25
- CREATE INDEX IF NOT EXISTS idx_artifacts_created_at ON artifacts(created_at);
26
-
27
- CREATE TABLE IF NOT EXISTS lineage_edges (
28
- lineage_id TEXT NOT NULL,
29
- parent_artifact_id TEXT NOT NULL,
30
- child_artifact_id TEXT NOT NULL,
31
- edge_kind TEXT NOT NULL,
32
- created_at TEXT,
33
- PRIMARY KEY (parent_artifact_id, child_artifact_id),
34
- FOREIGN KEY (parent_artifact_id) REFERENCES artifacts(artifact_id),
35
- FOREIGN KEY (child_artifact_id) REFERENCES artifacts(artifact_id)
36
- );
37
-
38
- CREATE INDEX IF NOT EXISTS idx_lineage_parent ON lineage_edges(parent_artifact_id);
39
- CREATE INDEX IF NOT EXISTS idx_lineage_child ON lineage_edges(child_artifact_id);
40
- CREATE INDEX IF NOT EXISTS idx_lineage_id ON lineage_edges(lineage_id);
41
-
42
- CREATE TABLE IF NOT EXISTS events (
43
- event_id TEXT PRIMARY KEY,
44
- kind TEXT NOT NULL,
45
- domain TEXT NOT NULL,
46
- timestamp TEXT,
47
- workflow_id TEXT NOT NULL,
48
- correlation_id TEXT NOT NULL,
49
- causation_id TEXT,
50
- tx_id TEXT,
51
- artifact_id TEXT,
52
- network_id TEXT NOT NULL,
53
- raw_json TEXT NOT NULL
54
- );
55
-
56
- CREATE INDEX IF NOT EXISTS idx_events_kind ON events(kind);
57
- CREATE INDEX IF NOT EXISTS idx_events_domain ON events(domain);
58
- CREATE INDEX IF NOT EXISTS idx_events_workflow_id ON events(workflow_id);
59
- CREATE INDEX IF NOT EXISTS idx_events_correlation_id ON events(correlation_id);
60
- CREATE INDEX IF NOT EXISTS idx_events_causation_id ON events(causation_id);
61
- CREATE INDEX IF NOT EXISTS idx_events_tx_id ON events(tx_id);
62
- CREATE INDEX IF NOT EXISTS idx_events_artifact_id ON events(artifact_id);
63
- CREATE INDEX IF NOT EXISTS idx_events_network_id ON events(network_id);
64
- CREATE INDEX IF NOT EXISTS idx_events_timestamp ON events(timestamp);
65
-
66
- CREATE TABLE IF NOT EXISTS traces (
67
- trace_id TEXT PRIMARY KEY,
68
- workflow_id TEXT UNIQUE NOT NULL,
69
- root_event_id TEXT,
70
- status TEXT NOT NULL,
71
- started_at TEXT,
72
- ended_at TEXT,
73
- FOREIGN KEY (root_event_id) REFERENCES events(event_id)
74
- );
75
-
76
- CREATE INDEX IF NOT EXISTS idx_traces_workflow_id ON traces(workflow_id);
77
- CREATE INDEX IF NOT EXISTS idx_traces_status ON traces(status);
78
- `;
1
+ export const SCHEMA_VERSION = 1;
79
2
  //# sourceMappingURL=schema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC;AAEhC,MAAM,CAAC,MAAM,GAAG,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4ElB,CAAC"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,15 +1,18 @@
1
1
  {
2
2
  "name": "@hardkas/query-store",
3
- "version": "0.2.2-alpha",
3
+ "version": "0.3.0-alpha",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
7
7
  "exports": {
8
- ".": "./dist/index.js"
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "import": "./dist/index.js"
11
+ }
9
12
  },
10
13
  "dependencies": {
11
- "@hardkas/core": "0.2.2-alpha",
12
- "@hardkas/artifacts": "0.2.2-alpha"
14
+ "@hardkas/core": "0.3.0-alpha",
15
+ "@hardkas/artifacts": "0.3.0-alpha"
13
16
  },
14
17
  "devDependencies": {
15
18
  "tsup": "^8.3.5",
@@ -36,7 +39,7 @@
36
39
  ],
37
40
  "scripts": {
38
41
  "build": "tsc",
39
- "test": "node --import tsx --test test/*.test.ts",
42
+ "test": "vitest run",
40
43
  "typecheck": "tsc --noEmit",
41
44
  "lint": "eslint ."
42
45
  }