@quarry-systems/drift-store-sqlite 0.1.0-alpha.1
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.
- package/README.md +128 -0
- package/package.json +40 -0
- package/src/index.d.ts +36 -0
- package/src/index.js +266 -0
- package/src/index.js.map +1 -0
- package/src/plugin.manifest.d.ts +9 -0
- package/src/plugin.manifest.js +47 -0
- package/src/plugin.manifest.js.map +1 -0
- package/src/schema.d.ts +508 -0
- package/src/schema.js +53 -0
- package/src/schema.js.map +1 -0
package/README.md
ADDED
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
# @quarry-systems/mcg-store-sqlite
|
|
2
|
+
|
|
3
|
+
 
|
|
4
|
+
|
|
5
|
+
SQLite run store adapter for MCG using Drizzle ORM.
|
|
6
|
+
|
|
7
|
+
## Features
|
|
8
|
+
|
|
9
|
+
- **Local-first**: Perfect for development and testing
|
|
10
|
+
- **Zero-ops**: No database server required
|
|
11
|
+
- **Fast**: In-memory or file-based persistence
|
|
12
|
+
- **Type-safe**: Drizzle ORM with full TypeScript support
|
|
13
|
+
- **Atomic operations**: Event sequencing with DB-side increment
|
|
14
|
+
|
|
15
|
+
## Installation
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
npm install @quarry-systems/mcg-store-sqlite
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Usage
|
|
22
|
+
|
|
23
|
+
```typescript
|
|
24
|
+
import { createSQLiteStore } from '@quarry-systems/mcg-store-sqlite';
|
|
25
|
+
|
|
26
|
+
// In-memory (for testing)
|
|
27
|
+
const store = createSQLiteStore({ filename: ':memory:' });
|
|
28
|
+
|
|
29
|
+
// File-based (for persistence)
|
|
30
|
+
const store = createSQLiteStore({ filename: './data/runs.db' });
|
|
31
|
+
|
|
32
|
+
// Create a run
|
|
33
|
+
const run = await store.createRun({
|
|
34
|
+
graphId: 'my-graph',
|
|
35
|
+
graphVersion: '1.0.0',
|
|
36
|
+
initialContext: { input: 'test' },
|
|
37
|
+
tags: ['test', 'demo']
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
// Append events
|
|
41
|
+
await store.appendEvent(run.id, {
|
|
42
|
+
type: 'node_start',
|
|
43
|
+
nodeId: 'node-1',
|
|
44
|
+
timestamp: Date.now(),
|
|
45
|
+
data: {}
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
// Get run with events
|
|
49
|
+
const runData = await store.getRun(run.id);
|
|
50
|
+
const events = await store.getEvents(run.id);
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### Integration with MCG
|
|
54
|
+
|
|
55
|
+
```typescript
|
|
56
|
+
import { ManagedCyclicGraph } from '@quarry-systems/managed-cyclic-graph';
|
|
57
|
+
import { createSQLiteStore } from '@quarry-systems/mcg-store-sqlite';
|
|
58
|
+
|
|
59
|
+
// Create store adapter
|
|
60
|
+
const store = createSQLiteStore({ filename: './data/runs.db' });
|
|
61
|
+
|
|
62
|
+
// Build graph with store plugin
|
|
63
|
+
const graph = new ManagedCyclicGraph()
|
|
64
|
+
.use({ services: { store } })
|
|
65
|
+
.node('start', {
|
|
66
|
+
type: 'action',
|
|
67
|
+
action: async (ctx) => {
|
|
68
|
+
console.log('Processing:', ctx.data.input);
|
|
69
|
+
return { processed: true };
|
|
70
|
+
}
|
|
71
|
+
})
|
|
72
|
+
.build();
|
|
73
|
+
|
|
74
|
+
// Run will be persisted automatically
|
|
75
|
+
const result = await graph.run({ input: 'test data' });
|
|
76
|
+
|
|
77
|
+
// Query runs later
|
|
78
|
+
const runs = await store.listRuns({
|
|
79
|
+
graphId: graph.id,
|
|
80
|
+
status: 'completed',
|
|
81
|
+
limit: 10
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
// Get full run history
|
|
85
|
+
const run = await store.getRun(result.runId);
|
|
86
|
+
const events = await store.getEvents(result.runId);
|
|
87
|
+
console.log(`Run ${run.id} had ${events.length} events`);
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## API
|
|
91
|
+
|
|
92
|
+
Implements `RunStoreAdapter` from `@quarry-systems/mcg-contracts`:
|
|
93
|
+
|
|
94
|
+
- `createRun(metadata)` - Create a new run
|
|
95
|
+
- `getRun(runId)` - Get run by ID
|
|
96
|
+
- `updateRunStatus(runId, status, options)` - Update run status
|
|
97
|
+
- `appendEvent(runId, event)` - Append event with atomic sequencing
|
|
98
|
+
- `getEvents(runId, fromSequence?)` - Get events for a run
|
|
99
|
+
- `saveSnapshot(runId, snapshot)` - Save context snapshot
|
|
100
|
+
- `getSnapshot(runId, version)` - Get snapshot by version
|
|
101
|
+
- `getLatestSnapshot(runId)` - Get latest snapshot
|
|
102
|
+
- `listRuns(filters)` - List runs with filtering
|
|
103
|
+
- `deleteRun(runId)` - Delete run and cascade
|
|
104
|
+
- `pruneOldRuns(olderThanMs)` - Delete old completed runs
|
|
105
|
+
|
|
106
|
+
## Configuration
|
|
107
|
+
|
|
108
|
+
```typescript
|
|
109
|
+
interface SQLiteStoreConfig {
|
|
110
|
+
/** Path to SQLite database file (use ':memory:' for in-memory) */
|
|
111
|
+
filename: string;
|
|
112
|
+
|
|
113
|
+
/** Enable WAL mode for better concurrency (default: true) */
|
|
114
|
+
walMode?: boolean;
|
|
115
|
+
}
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## Testing
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
npm test
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
All tests run in-memory with no external dependencies.
|
|
125
|
+
|
|
126
|
+
## License
|
|
127
|
+
|
|
128
|
+
MIT
|
package/package.json
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@quarry-systems/drift-store-sqlite",
|
|
3
|
+
"version": "0.1.0-alpha.1",
|
|
4
|
+
"description": "SQLite run store adapter for Drift using Drizzle ORM",
|
|
5
|
+
"main": "./src/index.js",
|
|
6
|
+
"types": "./src/index.d.ts",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"build": "tsc -p .",
|
|
9
|
+
"test": "vitest run",
|
|
10
|
+
"test:watch": "vitest"
|
|
11
|
+
},
|
|
12
|
+
"keywords": [
|
|
13
|
+
"drift",
|
|
14
|
+
"store",
|
|
15
|
+
"sqlite",
|
|
16
|
+
"persistence",
|
|
17
|
+
"backend",
|
|
18
|
+
"node"
|
|
19
|
+
],
|
|
20
|
+
"author": "Quarry Systems",
|
|
21
|
+
"license": "MIT",
|
|
22
|
+
"engines": {
|
|
23
|
+
"node": ">=18.0.0"
|
|
24
|
+
},
|
|
25
|
+
"browser": false,
|
|
26
|
+
"dependencies": {
|
|
27
|
+
"better-sqlite3": "^11.0.0",
|
|
28
|
+
"drizzle-orm": "^0.38.0"
|
|
29
|
+
},
|
|
30
|
+
"devDependencies": {
|
|
31
|
+
"@types/better-sqlite3": "^7.6.0",
|
|
32
|
+
"typescript": "^5.3.0",
|
|
33
|
+
"vitest": "^2.1.0"
|
|
34
|
+
},
|
|
35
|
+
"files": [
|
|
36
|
+
"dist",
|
|
37
|
+
"src"
|
|
38
|
+
],
|
|
39
|
+
"type": "commonjs"
|
|
40
|
+
}
|
package/src/index.d.ts
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCG SQLite Run Store Adapter
|
|
3
|
+
*
|
|
4
|
+
* SQLite-based run store using Drizzle ORM.
|
|
5
|
+
* Ideal for local development, testing, and single-node deployments.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
import type { RunStoreAdapter } from '@quarry-systems/drift-contracts';
|
|
10
|
+
/**
|
|
11
|
+
* SQLite store configuration
|
|
12
|
+
*/
|
|
13
|
+
export interface SQLiteStoreConfig {
|
|
14
|
+
/** Path to SQLite database file (use ':memory:' for in-memory) */
|
|
15
|
+
filename: string;
|
|
16
|
+
/** Enable WAL mode for better concurrency (default: true) */
|
|
17
|
+
walMode?: boolean;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Create a SQLite run store adapter.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```typescript
|
|
24
|
+
* // In-memory for testing
|
|
25
|
+
* const store = createSQLiteStore({ filename: ':memory:' });
|
|
26
|
+
*
|
|
27
|
+
* // File-based for persistence
|
|
28
|
+
* const store = createSQLiteStore({ filename: './data/mcg.db' });
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export declare function createSQLiteStore(config: SQLiteStoreConfig): RunStoreAdapter & {
|
|
32
|
+
close(): void;
|
|
33
|
+
};
|
|
34
|
+
export { runs, runEvents, runSnapshots } from './schema';
|
|
35
|
+
export type { RunRow, RunEventRow, RunSnapshotRow } from './schema';
|
|
36
|
+
export type { RunStoreAdapter, RunMetadata, RunEvent, RunSnapshot, RunStatus, } from '@quarry-systems/drift-contracts';
|
package/src/index.js
ADDED
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* MCG SQLite Run Store Adapter
|
|
4
|
+
*
|
|
5
|
+
* SQLite-based run store using Drizzle ORM.
|
|
6
|
+
* Ideal for local development, testing, and single-node deployments.
|
|
7
|
+
*
|
|
8
|
+
* @packageDocumentation
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.runSnapshots = exports.runEvents = exports.runs = void 0;
|
|
12
|
+
exports.createSQLiteStore = createSQLiteStore;
|
|
13
|
+
const tslib_1 = require("tslib");
|
|
14
|
+
const better_sqlite3_1 = tslib_1.__importDefault(require("better-sqlite3"));
|
|
15
|
+
const better_sqlite3_2 = require("drizzle-orm/better-sqlite3");
|
|
16
|
+
const drizzle_orm_1 = require("drizzle-orm");
|
|
17
|
+
const schema_1 = require("./schema");
|
|
18
|
+
// ============================================================================
|
|
19
|
+
// Mappers
|
|
20
|
+
// ============================================================================
|
|
21
|
+
function mapRunToMetadata(row) {
|
|
22
|
+
return {
|
|
23
|
+
id: row.id,
|
|
24
|
+
graphId: row.graphId,
|
|
25
|
+
graphVersion: row.graphVersion ?? undefined,
|
|
26
|
+
status: row.status,
|
|
27
|
+
currentNode: row.currentNode ?? undefined,
|
|
28
|
+
eventSeq: row.eventSeq,
|
|
29
|
+
startedAt: row.startedAt,
|
|
30
|
+
updatedAt: row.updatedAt,
|
|
31
|
+
completedAt: row.completedAt ?? undefined,
|
|
32
|
+
error: row.error ? JSON.parse(row.error) : undefined,
|
|
33
|
+
tags: row.tags ? JSON.parse(row.tags) : undefined,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
function mapEventToRunEvent(row) {
|
|
37
|
+
return {
|
|
38
|
+
runId: row.runId,
|
|
39
|
+
sequence: row.sequence,
|
|
40
|
+
schemaVersion: row.schemaVersion,
|
|
41
|
+
type: row.type,
|
|
42
|
+
nodeId: row.nodeId ?? undefined,
|
|
43
|
+
payload: row.payload ? JSON.parse(row.payload) : undefined,
|
|
44
|
+
timestamp: row.timestamp,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
function mapSnapshotToRunSnapshot(row) {
|
|
48
|
+
return {
|
|
49
|
+
runId: row.runId,
|
|
50
|
+
version: row.version,
|
|
51
|
+
nodeId: row.nodeId,
|
|
52
|
+
ctx: JSON.parse(row.ctx),
|
|
53
|
+
timestamp: row.timestamp,
|
|
54
|
+
status: 'running', // TODO: Join with runs table to get actual status
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
// ============================================================================
|
|
58
|
+
// Schema Creation
|
|
59
|
+
// ============================================================================
|
|
60
|
+
const CREATE_TABLES_SQL = `
|
|
61
|
+
CREATE TABLE IF NOT EXISTS mcg_runs (
|
|
62
|
+
id TEXT PRIMARY KEY,
|
|
63
|
+
graph_id TEXT NOT NULL,
|
|
64
|
+
graph_version TEXT,
|
|
65
|
+
status TEXT NOT NULL,
|
|
66
|
+
current_node TEXT,
|
|
67
|
+
event_seq INTEGER NOT NULL DEFAULT 0,
|
|
68
|
+
initial_ctx TEXT NOT NULL,
|
|
69
|
+
error TEXT,
|
|
70
|
+
tags TEXT,
|
|
71
|
+
started_at INTEGER NOT NULL,
|
|
72
|
+
updated_at INTEGER NOT NULL,
|
|
73
|
+
completed_at INTEGER
|
|
74
|
+
);
|
|
75
|
+
|
|
76
|
+
CREATE INDEX IF NOT EXISTS mcg_runs_graph_id_idx ON mcg_runs(graph_id);
|
|
77
|
+
CREATE INDEX IF NOT EXISTS mcg_runs_status_idx ON mcg_runs(status);
|
|
78
|
+
|
|
79
|
+
CREATE TABLE IF NOT EXISTS mcg_run_events (
|
|
80
|
+
id TEXT PRIMARY KEY,
|
|
81
|
+
run_id TEXT NOT NULL REFERENCES mcg_runs(id) ON DELETE CASCADE,
|
|
82
|
+
sequence INTEGER NOT NULL,
|
|
83
|
+
schema_version INTEGER NOT NULL DEFAULT 1,
|
|
84
|
+
type TEXT NOT NULL,
|
|
85
|
+
node_id TEXT,
|
|
86
|
+
payload TEXT,
|
|
87
|
+
timestamp INTEGER NOT NULL
|
|
88
|
+
);
|
|
89
|
+
|
|
90
|
+
CREATE INDEX IF NOT EXISTS mcg_run_events_run_seq_idx ON mcg_run_events(run_id, sequence);
|
|
91
|
+
CREATE UNIQUE INDEX IF NOT EXISTS mcg_run_events_run_seq_unique ON mcg_run_events(run_id, sequence);
|
|
92
|
+
|
|
93
|
+
CREATE TABLE IF NOT EXISTS mcg_run_snapshots (
|
|
94
|
+
id TEXT PRIMARY KEY,
|
|
95
|
+
run_id TEXT NOT NULL REFERENCES mcg_runs(id) ON DELETE CASCADE,
|
|
96
|
+
version INTEGER NOT NULL,
|
|
97
|
+
node_id TEXT NOT NULL,
|
|
98
|
+
ctx TEXT NOT NULL,
|
|
99
|
+
timestamp INTEGER NOT NULL
|
|
100
|
+
);
|
|
101
|
+
|
|
102
|
+
CREATE INDEX IF NOT EXISTS mcg_run_snapshots_run_version_idx ON mcg_run_snapshots(run_id, version);
|
|
103
|
+
`;
|
|
104
|
+
// ============================================================================
|
|
105
|
+
// SQLite Store Implementation
|
|
106
|
+
// ============================================================================
|
|
107
|
+
/**
|
|
108
|
+
* Create a SQLite run store adapter.
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* ```typescript
|
|
112
|
+
* // In-memory for testing
|
|
113
|
+
* const store = createSQLiteStore({ filename: ':memory:' });
|
|
114
|
+
*
|
|
115
|
+
* // File-based for persistence
|
|
116
|
+
* const store = createSQLiteStore({ filename: './data/mcg.db' });
|
|
117
|
+
* ```
|
|
118
|
+
*/
|
|
119
|
+
function createSQLiteStore(config) {
|
|
120
|
+
const sqlite = new better_sqlite3_1.default(config.filename);
|
|
121
|
+
// Enable WAL mode for better concurrency (default: true)
|
|
122
|
+
if (config.walMode !== false) {
|
|
123
|
+
sqlite.pragma('journal_mode = WAL');
|
|
124
|
+
}
|
|
125
|
+
// Enable foreign keys
|
|
126
|
+
sqlite.pragma('foreign_keys = ON');
|
|
127
|
+
// Create tables
|
|
128
|
+
sqlite.exec(CREATE_TABLES_SQL);
|
|
129
|
+
const db = (0, better_sqlite3_2.drizzle)(sqlite);
|
|
130
|
+
return {
|
|
131
|
+
name: 'sqlite',
|
|
132
|
+
async createRun(graphId, initialCtx, options) {
|
|
133
|
+
const id = crypto.randomUUID();
|
|
134
|
+
const now = Date.now();
|
|
135
|
+
const [row] = await db.insert(schema_1.runs).values({
|
|
136
|
+
id,
|
|
137
|
+
graphId,
|
|
138
|
+
graphVersion: options?.graphVersion,
|
|
139
|
+
status: 'pending',
|
|
140
|
+
eventSeq: 0,
|
|
141
|
+
initialCtx: JSON.stringify(initialCtx),
|
|
142
|
+
tags: options?.tags ? JSON.stringify(options.tags) : null,
|
|
143
|
+
startedAt: now,
|
|
144
|
+
updatedAt: now,
|
|
145
|
+
}).returning();
|
|
146
|
+
return mapRunToMetadata(row);
|
|
147
|
+
},
|
|
148
|
+
async getRun(runId) {
|
|
149
|
+
const [row] = await db.select().from(schema_1.runs).where((0, drizzle_orm_1.eq)(schema_1.runs.id, runId));
|
|
150
|
+
return row ? mapRunToMetadata(row) : null;
|
|
151
|
+
},
|
|
152
|
+
async updateRunStatus(runId, status, update) {
|
|
153
|
+
const now = Date.now();
|
|
154
|
+
const isTerminal = ['completed', 'failed', 'cancelled'].includes(status);
|
|
155
|
+
await db.update(schema_1.runs)
|
|
156
|
+
.set({
|
|
157
|
+
status,
|
|
158
|
+
currentNode: update?.currentNode,
|
|
159
|
+
error: update?.error ? JSON.stringify(update.error) : undefined,
|
|
160
|
+
updatedAt: now,
|
|
161
|
+
completedAt: isTerminal ? now : undefined,
|
|
162
|
+
})
|
|
163
|
+
.where((0, drizzle_orm_1.eq)(schema_1.runs.id, runId));
|
|
164
|
+
},
|
|
165
|
+
async appendEvent(runId, event) {
|
|
166
|
+
// Atomic increment using SQL
|
|
167
|
+
const [updated] = await db.update(schema_1.runs)
|
|
168
|
+
.set({
|
|
169
|
+
eventSeq: (0, drizzle_orm_1.sql) `${schema_1.runs.eventSeq} + 1`,
|
|
170
|
+
updatedAt: Date.now(),
|
|
171
|
+
})
|
|
172
|
+
.where((0, drizzle_orm_1.eq)(schema_1.runs.id, runId))
|
|
173
|
+
.returning({ eventSeq: schema_1.runs.eventSeq });
|
|
174
|
+
if (!updated) {
|
|
175
|
+
throw new Error(`Run ${runId} not found`);
|
|
176
|
+
}
|
|
177
|
+
const sequence = updated.eventSeq;
|
|
178
|
+
await db.insert(schema_1.runEvents).values({
|
|
179
|
+
id: crypto.randomUUID(),
|
|
180
|
+
runId,
|
|
181
|
+
sequence,
|
|
182
|
+
schemaVersion: event.schemaVersion,
|
|
183
|
+
type: event.type,
|
|
184
|
+
nodeId: event.nodeId,
|
|
185
|
+
payload: event.payload !== undefined ? JSON.stringify(event.payload) : null,
|
|
186
|
+
timestamp: event.timestamp,
|
|
187
|
+
});
|
|
188
|
+
return sequence;
|
|
189
|
+
},
|
|
190
|
+
async getEvents(runId, fromSequence = 0) {
|
|
191
|
+
const rows = await db.select()
|
|
192
|
+
.from(schema_1.runEvents)
|
|
193
|
+
.where((0, drizzle_orm_1.and)((0, drizzle_orm_1.eq)(schema_1.runEvents.runId, runId), (0, drizzle_orm_1.gte)(schema_1.runEvents.sequence, fromSequence)))
|
|
194
|
+
.orderBy(schema_1.runEvents.sequence);
|
|
195
|
+
return rows.map(mapEventToRunEvent);
|
|
196
|
+
},
|
|
197
|
+
async saveSnapshot(snapshot) {
|
|
198
|
+
await db.insert(schema_1.runSnapshots).values({
|
|
199
|
+
id: crypto.randomUUID(),
|
|
200
|
+
runId: snapshot.runId,
|
|
201
|
+
version: snapshot.version,
|
|
202
|
+
nodeId: snapshot.nodeId,
|
|
203
|
+
ctx: JSON.stringify(snapshot.ctx),
|
|
204
|
+
timestamp: Date.now(),
|
|
205
|
+
});
|
|
206
|
+
},
|
|
207
|
+
async getLatestSnapshot(runId) {
|
|
208
|
+
const [row] = await db.select()
|
|
209
|
+
.from(schema_1.runSnapshots)
|
|
210
|
+
.where((0, drizzle_orm_1.eq)(schema_1.runSnapshots.runId, runId))
|
|
211
|
+
.orderBy((0, drizzle_orm_1.desc)(schema_1.runSnapshots.version))
|
|
212
|
+
.limit(1);
|
|
213
|
+
return row ? mapSnapshotToRunSnapshot(row) : null;
|
|
214
|
+
},
|
|
215
|
+
async getSnapshot(runId, version) {
|
|
216
|
+
const [row] = await db.select()
|
|
217
|
+
.from(schema_1.runSnapshots)
|
|
218
|
+
.where((0, drizzle_orm_1.and)((0, drizzle_orm_1.eq)(schema_1.runSnapshots.runId, runId), (0, drizzle_orm_1.eq)(schema_1.runSnapshots.version, version)));
|
|
219
|
+
return row ? mapSnapshotToRunSnapshot(row) : null;
|
|
220
|
+
},
|
|
221
|
+
async listRuns(options) {
|
|
222
|
+
let query = db.select().from(schema_1.runs);
|
|
223
|
+
const conditions = [];
|
|
224
|
+
if (options?.graphId) {
|
|
225
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.runs.graphId, options.graphId));
|
|
226
|
+
}
|
|
227
|
+
if (options?.status) {
|
|
228
|
+
const statuses = Array.isArray(options.status) ? options.status : [options.status];
|
|
229
|
+
conditions.push((0, drizzle_orm_1.inArray)(schema_1.runs.status, statuses));
|
|
230
|
+
}
|
|
231
|
+
if (conditions.length > 0) {
|
|
232
|
+
query = query.where((0, drizzle_orm_1.and)(...conditions));
|
|
233
|
+
}
|
|
234
|
+
query = query.orderBy((0, drizzle_orm_1.desc)(schema_1.runs.startedAt));
|
|
235
|
+
if (options?.limit) {
|
|
236
|
+
query = query.limit(options.limit);
|
|
237
|
+
}
|
|
238
|
+
if (options?.offset) {
|
|
239
|
+
query = query.offset(options.offset);
|
|
240
|
+
}
|
|
241
|
+
const rows = await query;
|
|
242
|
+
return rows.map(mapRunToMetadata);
|
|
243
|
+
},
|
|
244
|
+
async deleteRun(runId) {
|
|
245
|
+
await db.delete(schema_1.runs).where((0, drizzle_orm_1.eq)(schema_1.runs.id, runId));
|
|
246
|
+
},
|
|
247
|
+
async pruneOldRuns(olderThanMs) {
|
|
248
|
+
const cutoff = Date.now() - olderThanMs;
|
|
249
|
+
const result = await db.delete(schema_1.runs)
|
|
250
|
+
.where((0, drizzle_orm_1.and)((0, drizzle_orm_1.inArray)(schema_1.runs.status, ['completed', 'failed', 'cancelled']), (0, drizzle_orm_1.sql) `${schema_1.runs.completedAt} IS NOT NULL AND ${schema_1.runs.completedAt} < ${cutoff}`))
|
|
251
|
+
.returning({ id: schema_1.runs.id });
|
|
252
|
+
return result.length;
|
|
253
|
+
},
|
|
254
|
+
close() {
|
|
255
|
+
sqlite.close();
|
|
256
|
+
},
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
// ============================================================================
|
|
260
|
+
// Re-exports
|
|
261
|
+
// ============================================================================
|
|
262
|
+
var schema_2 = require("./schema");
|
|
263
|
+
Object.defineProperty(exports, "runs", { enumerable: true, get: function () { return schema_2.runs; } });
|
|
264
|
+
Object.defineProperty(exports, "runEvents", { enumerable: true, get: function () { return schema_2.runEvents; } });
|
|
265
|
+
Object.defineProperty(exports, "runSnapshots", { enumerable: true, get: function () { return schema_2.runSnapshots; } });
|
|
266
|
+
//# sourceMappingURL=index.js.map
|
package/src/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../libs/drift/drift-plugins/mcg-store-sqlite/src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plugin Manifest for @quarry-systems/mcg-store-sqlite
|
|
3
|
+
*
|
|
4
|
+
* This manifest declares the plugin's metadata, capabilities, and requirements.
|
|
5
|
+
* It enables future security policies, sandboxing, and hosted execution.
|
|
6
|
+
*/
|
|
7
|
+
import type { PluginManifest } from '@quarry-systems/drift-contracts';
|
|
8
|
+
export declare const manifest: PluginManifest;
|
|
9
|
+
export default manifest;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Plugin Manifest for @quarry-systems/mcg-store-sqlite
|
|
4
|
+
*
|
|
5
|
+
* This manifest declares the plugin's metadata, capabilities, and requirements.
|
|
6
|
+
* It enables future security policies, sandboxing, and hosted execution.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.manifest = void 0;
|
|
10
|
+
exports.manifest = {
|
|
11
|
+
name: '@quarry-systems/mcg-store-sqlite',
|
|
12
|
+
version: '0.6.0',
|
|
13
|
+
apiVersion: '1.0',
|
|
14
|
+
description: 'SQLite storage plugin for Managed Cyclic Graph (MCG)',
|
|
15
|
+
author: {
|
|
16
|
+
name: 'Quarry Systems',
|
|
17
|
+
email: 'support@quarrysystems.com',
|
|
18
|
+
},
|
|
19
|
+
license: 'ISC',
|
|
20
|
+
type: ['node'],
|
|
21
|
+
capabilities: {
|
|
22
|
+
network: false,
|
|
23
|
+
filesystem: true, // Reads/writes SQLite database files
|
|
24
|
+
secrets: false,
|
|
25
|
+
subprocess: false,
|
|
26
|
+
},
|
|
27
|
+
nodes: [],
|
|
28
|
+
services: [
|
|
29
|
+
{
|
|
30
|
+
id: 'sqliteStore',
|
|
31
|
+
name: 'SQLite Store Service',
|
|
32
|
+
description: 'SQLite-based key-value storage service',
|
|
33
|
+
},
|
|
34
|
+
],
|
|
35
|
+
peerDependencies: {
|
|
36
|
+
'@quarry-systems/drift-core': '^0.6.0',
|
|
37
|
+
'@quarry-systems/drift-contracts': '^0.6.0',
|
|
38
|
+
},
|
|
39
|
+
keywords: ['drift', 'mcg', 'managed-cyclic-graph', 'plugin', 'storage', 'sqlite', 'database', 'persistence'],
|
|
40
|
+
repository: {
|
|
41
|
+
type: 'git',
|
|
42
|
+
url: 'https://github.com/quarry-systems/quarry-systems',
|
|
43
|
+
directory: 'libs/drift/drift-plugins/mcg-store-sqlite',
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
exports.default = exports.manifest;
|
|
47
|
+
//# sourceMappingURL=plugin.manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.manifest.js","sourceRoot":"","sources":["../../../../../../libs/drift/drift-plugins/mcg-store-sqlite/src/plugin.manifest.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAIU,QAAA,QAAQ,GAAmB;IACtC,IAAI,EAAE,kCAAkC;IACxC,OAAO,EAAE,OAAO;IAChB,UAAU,EAAE,KAAK;IAEjB,WAAW,EAAE,sDAAsD;IAEnE,MAAM,EAAE;QACN,IAAI,EAAE,gBAAgB;QACtB,KAAK,EAAE,2BAA2B;KACnC;IAED,OAAO,EAAE,KAAK;IAEd,IAAI,EAAE,CAAC,MAAM,CAAC;IAEd,YAAY,EAAE;QACZ,OAAO,EAAE,KAAK;QACd,UAAU,EAAE,IAAI,EAAI,qCAAqC;QACzD,OAAO,EAAE,KAAK;QACd,UAAU,EAAE,KAAK;KAClB;IAED,KAAK,EAAE,EAAE;IAET,QAAQ,EAAE;QACR;YACE,EAAE,EAAE,aAAa;YACjB,IAAI,EAAE,sBAAsB;YAC5B,WAAW,EAAE,wCAAwC;SACtD;KACF;IAED,gBAAgB,EAAE;QAChB,4BAA4B,EAAE,QAAQ;QACtC,iCAAiC,EAAE,QAAQ;KAC5C;IAED,QAAQ,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,sBAAsB,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,CAAC;IAE5G,UAAU,EAAE;QACV,IAAI,EAAE,KAAK;QACX,GAAG,EAAE,kDAAkD;QACvD,SAAS,EAAE,2CAA2C;KACvD;CACF,CAAC;AAEF,kBAAe,gBAAQ,CAAC"}
|
package/src/schema.d.ts
ADDED
|
@@ -0,0 +1,508 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Drizzle schema for MCG Run Store
|
|
3
|
+
*
|
|
4
|
+
* This schema is designed to work with both SQLite and Postgres.
|
|
5
|
+
* The SQLite version uses better-sqlite3, Postgres uses node-postgres.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
export declare const runs: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
|
|
10
|
+
name: "mcg_runs";
|
|
11
|
+
schema: undefined;
|
|
12
|
+
columns: {
|
|
13
|
+
id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
14
|
+
name: "id";
|
|
15
|
+
tableName: "mcg_runs";
|
|
16
|
+
dataType: "string";
|
|
17
|
+
columnType: "SQLiteText";
|
|
18
|
+
data: string;
|
|
19
|
+
driverParam: string;
|
|
20
|
+
notNull: true;
|
|
21
|
+
hasDefault: false;
|
|
22
|
+
isPrimaryKey: true;
|
|
23
|
+
isAutoincrement: false;
|
|
24
|
+
hasRuntimeDefault: false;
|
|
25
|
+
enumValues: [string, ...string[]];
|
|
26
|
+
baseColumn: never;
|
|
27
|
+
identity: undefined;
|
|
28
|
+
generated: undefined;
|
|
29
|
+
}, {}, {
|
|
30
|
+
length: number | undefined;
|
|
31
|
+
}>;
|
|
32
|
+
graphId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
33
|
+
name: "graph_id";
|
|
34
|
+
tableName: "mcg_runs";
|
|
35
|
+
dataType: "string";
|
|
36
|
+
columnType: "SQLiteText";
|
|
37
|
+
data: string;
|
|
38
|
+
driverParam: string;
|
|
39
|
+
notNull: true;
|
|
40
|
+
hasDefault: false;
|
|
41
|
+
isPrimaryKey: false;
|
|
42
|
+
isAutoincrement: false;
|
|
43
|
+
hasRuntimeDefault: false;
|
|
44
|
+
enumValues: [string, ...string[]];
|
|
45
|
+
baseColumn: never;
|
|
46
|
+
identity: undefined;
|
|
47
|
+
generated: undefined;
|
|
48
|
+
}, {}, {
|
|
49
|
+
length: number | undefined;
|
|
50
|
+
}>;
|
|
51
|
+
graphVersion: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
52
|
+
name: "graph_version";
|
|
53
|
+
tableName: "mcg_runs";
|
|
54
|
+
dataType: "string";
|
|
55
|
+
columnType: "SQLiteText";
|
|
56
|
+
data: string;
|
|
57
|
+
driverParam: string;
|
|
58
|
+
notNull: false;
|
|
59
|
+
hasDefault: false;
|
|
60
|
+
isPrimaryKey: false;
|
|
61
|
+
isAutoincrement: false;
|
|
62
|
+
hasRuntimeDefault: false;
|
|
63
|
+
enumValues: [string, ...string[]];
|
|
64
|
+
baseColumn: never;
|
|
65
|
+
identity: undefined;
|
|
66
|
+
generated: undefined;
|
|
67
|
+
}, {}, {
|
|
68
|
+
length: number | undefined;
|
|
69
|
+
}>;
|
|
70
|
+
status: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
71
|
+
name: "status";
|
|
72
|
+
tableName: "mcg_runs";
|
|
73
|
+
dataType: "string";
|
|
74
|
+
columnType: "SQLiteText";
|
|
75
|
+
data: string;
|
|
76
|
+
driverParam: string;
|
|
77
|
+
notNull: true;
|
|
78
|
+
hasDefault: false;
|
|
79
|
+
isPrimaryKey: false;
|
|
80
|
+
isAutoincrement: false;
|
|
81
|
+
hasRuntimeDefault: false;
|
|
82
|
+
enumValues: [string, ...string[]];
|
|
83
|
+
baseColumn: never;
|
|
84
|
+
identity: undefined;
|
|
85
|
+
generated: undefined;
|
|
86
|
+
}, {}, {
|
|
87
|
+
length: number | undefined;
|
|
88
|
+
}>;
|
|
89
|
+
currentNode: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
90
|
+
name: "current_node";
|
|
91
|
+
tableName: "mcg_runs";
|
|
92
|
+
dataType: "string";
|
|
93
|
+
columnType: "SQLiteText";
|
|
94
|
+
data: string;
|
|
95
|
+
driverParam: string;
|
|
96
|
+
notNull: false;
|
|
97
|
+
hasDefault: false;
|
|
98
|
+
isPrimaryKey: false;
|
|
99
|
+
isAutoincrement: false;
|
|
100
|
+
hasRuntimeDefault: false;
|
|
101
|
+
enumValues: [string, ...string[]];
|
|
102
|
+
baseColumn: never;
|
|
103
|
+
identity: undefined;
|
|
104
|
+
generated: undefined;
|
|
105
|
+
}, {}, {
|
|
106
|
+
length: number | undefined;
|
|
107
|
+
}>;
|
|
108
|
+
eventSeq: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
109
|
+
name: "event_seq";
|
|
110
|
+
tableName: "mcg_runs";
|
|
111
|
+
dataType: "number";
|
|
112
|
+
columnType: "SQLiteInteger";
|
|
113
|
+
data: number;
|
|
114
|
+
driverParam: number;
|
|
115
|
+
notNull: true;
|
|
116
|
+
hasDefault: true;
|
|
117
|
+
isPrimaryKey: false;
|
|
118
|
+
isAutoincrement: false;
|
|
119
|
+
hasRuntimeDefault: false;
|
|
120
|
+
enumValues: undefined;
|
|
121
|
+
baseColumn: never;
|
|
122
|
+
identity: undefined;
|
|
123
|
+
generated: undefined;
|
|
124
|
+
}, {}, {}>;
|
|
125
|
+
initialCtx: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
126
|
+
name: "initial_ctx";
|
|
127
|
+
tableName: "mcg_runs";
|
|
128
|
+
dataType: "string";
|
|
129
|
+
columnType: "SQLiteText";
|
|
130
|
+
data: string;
|
|
131
|
+
driverParam: string;
|
|
132
|
+
notNull: true;
|
|
133
|
+
hasDefault: false;
|
|
134
|
+
isPrimaryKey: false;
|
|
135
|
+
isAutoincrement: false;
|
|
136
|
+
hasRuntimeDefault: false;
|
|
137
|
+
enumValues: [string, ...string[]];
|
|
138
|
+
baseColumn: never;
|
|
139
|
+
identity: undefined;
|
|
140
|
+
generated: undefined;
|
|
141
|
+
}, {}, {
|
|
142
|
+
length: number | undefined;
|
|
143
|
+
}>;
|
|
144
|
+
error: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
145
|
+
name: "error";
|
|
146
|
+
tableName: "mcg_runs";
|
|
147
|
+
dataType: "string";
|
|
148
|
+
columnType: "SQLiteText";
|
|
149
|
+
data: string;
|
|
150
|
+
driverParam: string;
|
|
151
|
+
notNull: false;
|
|
152
|
+
hasDefault: false;
|
|
153
|
+
isPrimaryKey: false;
|
|
154
|
+
isAutoincrement: false;
|
|
155
|
+
hasRuntimeDefault: false;
|
|
156
|
+
enumValues: [string, ...string[]];
|
|
157
|
+
baseColumn: never;
|
|
158
|
+
identity: undefined;
|
|
159
|
+
generated: undefined;
|
|
160
|
+
}, {}, {
|
|
161
|
+
length: number | undefined;
|
|
162
|
+
}>;
|
|
163
|
+
tags: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
164
|
+
name: "tags";
|
|
165
|
+
tableName: "mcg_runs";
|
|
166
|
+
dataType: "string";
|
|
167
|
+
columnType: "SQLiteText";
|
|
168
|
+
data: string;
|
|
169
|
+
driverParam: string;
|
|
170
|
+
notNull: false;
|
|
171
|
+
hasDefault: false;
|
|
172
|
+
isPrimaryKey: false;
|
|
173
|
+
isAutoincrement: false;
|
|
174
|
+
hasRuntimeDefault: false;
|
|
175
|
+
enumValues: [string, ...string[]];
|
|
176
|
+
baseColumn: never;
|
|
177
|
+
identity: undefined;
|
|
178
|
+
generated: undefined;
|
|
179
|
+
}, {}, {
|
|
180
|
+
length: number | undefined;
|
|
181
|
+
}>;
|
|
182
|
+
startedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
183
|
+
name: "started_at";
|
|
184
|
+
tableName: "mcg_runs";
|
|
185
|
+
dataType: "number";
|
|
186
|
+
columnType: "SQLiteInteger";
|
|
187
|
+
data: number;
|
|
188
|
+
driverParam: number;
|
|
189
|
+
notNull: true;
|
|
190
|
+
hasDefault: false;
|
|
191
|
+
isPrimaryKey: false;
|
|
192
|
+
isAutoincrement: false;
|
|
193
|
+
hasRuntimeDefault: false;
|
|
194
|
+
enumValues: undefined;
|
|
195
|
+
baseColumn: never;
|
|
196
|
+
identity: undefined;
|
|
197
|
+
generated: undefined;
|
|
198
|
+
}, {}, {}>;
|
|
199
|
+
updatedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
200
|
+
name: "updated_at";
|
|
201
|
+
tableName: "mcg_runs";
|
|
202
|
+
dataType: "number";
|
|
203
|
+
columnType: "SQLiteInteger";
|
|
204
|
+
data: number;
|
|
205
|
+
driverParam: number;
|
|
206
|
+
notNull: true;
|
|
207
|
+
hasDefault: false;
|
|
208
|
+
isPrimaryKey: false;
|
|
209
|
+
isAutoincrement: false;
|
|
210
|
+
hasRuntimeDefault: false;
|
|
211
|
+
enumValues: undefined;
|
|
212
|
+
baseColumn: never;
|
|
213
|
+
identity: undefined;
|
|
214
|
+
generated: undefined;
|
|
215
|
+
}, {}, {}>;
|
|
216
|
+
completedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
217
|
+
name: "completed_at";
|
|
218
|
+
tableName: "mcg_runs";
|
|
219
|
+
dataType: "number";
|
|
220
|
+
columnType: "SQLiteInteger";
|
|
221
|
+
data: number;
|
|
222
|
+
driverParam: number;
|
|
223
|
+
notNull: false;
|
|
224
|
+
hasDefault: false;
|
|
225
|
+
isPrimaryKey: false;
|
|
226
|
+
isAutoincrement: false;
|
|
227
|
+
hasRuntimeDefault: false;
|
|
228
|
+
enumValues: undefined;
|
|
229
|
+
baseColumn: never;
|
|
230
|
+
identity: undefined;
|
|
231
|
+
generated: undefined;
|
|
232
|
+
}, {}, {}>;
|
|
233
|
+
};
|
|
234
|
+
dialect: "sqlite";
|
|
235
|
+
}>;
|
|
236
|
+
export declare const runEvents: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
|
|
237
|
+
name: "mcg_run_events";
|
|
238
|
+
schema: undefined;
|
|
239
|
+
columns: {
|
|
240
|
+
id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
241
|
+
name: "id";
|
|
242
|
+
tableName: "mcg_run_events";
|
|
243
|
+
dataType: "string";
|
|
244
|
+
columnType: "SQLiteText";
|
|
245
|
+
data: string;
|
|
246
|
+
driverParam: string;
|
|
247
|
+
notNull: true;
|
|
248
|
+
hasDefault: false;
|
|
249
|
+
isPrimaryKey: true;
|
|
250
|
+
isAutoincrement: false;
|
|
251
|
+
hasRuntimeDefault: false;
|
|
252
|
+
enumValues: [string, ...string[]];
|
|
253
|
+
baseColumn: never;
|
|
254
|
+
identity: undefined;
|
|
255
|
+
generated: undefined;
|
|
256
|
+
}, {}, {
|
|
257
|
+
length: number | undefined;
|
|
258
|
+
}>;
|
|
259
|
+
runId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
260
|
+
name: "run_id";
|
|
261
|
+
tableName: "mcg_run_events";
|
|
262
|
+
dataType: "string";
|
|
263
|
+
columnType: "SQLiteText";
|
|
264
|
+
data: string;
|
|
265
|
+
driverParam: string;
|
|
266
|
+
notNull: true;
|
|
267
|
+
hasDefault: false;
|
|
268
|
+
isPrimaryKey: false;
|
|
269
|
+
isAutoincrement: false;
|
|
270
|
+
hasRuntimeDefault: false;
|
|
271
|
+
enumValues: [string, ...string[]];
|
|
272
|
+
baseColumn: never;
|
|
273
|
+
identity: undefined;
|
|
274
|
+
generated: undefined;
|
|
275
|
+
}, {}, {
|
|
276
|
+
length: number | undefined;
|
|
277
|
+
}>;
|
|
278
|
+
sequence: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
279
|
+
name: "sequence";
|
|
280
|
+
tableName: "mcg_run_events";
|
|
281
|
+
dataType: "number";
|
|
282
|
+
columnType: "SQLiteInteger";
|
|
283
|
+
data: number;
|
|
284
|
+
driverParam: number;
|
|
285
|
+
notNull: true;
|
|
286
|
+
hasDefault: false;
|
|
287
|
+
isPrimaryKey: false;
|
|
288
|
+
isAutoincrement: false;
|
|
289
|
+
hasRuntimeDefault: false;
|
|
290
|
+
enumValues: undefined;
|
|
291
|
+
baseColumn: never;
|
|
292
|
+
identity: undefined;
|
|
293
|
+
generated: undefined;
|
|
294
|
+
}, {}, {}>;
|
|
295
|
+
schemaVersion: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
296
|
+
name: "schema_version";
|
|
297
|
+
tableName: "mcg_run_events";
|
|
298
|
+
dataType: "number";
|
|
299
|
+
columnType: "SQLiteInteger";
|
|
300
|
+
data: number;
|
|
301
|
+
driverParam: number;
|
|
302
|
+
notNull: true;
|
|
303
|
+
hasDefault: true;
|
|
304
|
+
isPrimaryKey: false;
|
|
305
|
+
isAutoincrement: false;
|
|
306
|
+
hasRuntimeDefault: false;
|
|
307
|
+
enumValues: undefined;
|
|
308
|
+
baseColumn: never;
|
|
309
|
+
identity: undefined;
|
|
310
|
+
generated: undefined;
|
|
311
|
+
}, {}, {}>;
|
|
312
|
+
type: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
313
|
+
name: "type";
|
|
314
|
+
tableName: "mcg_run_events";
|
|
315
|
+
dataType: "string";
|
|
316
|
+
columnType: "SQLiteText";
|
|
317
|
+
data: string;
|
|
318
|
+
driverParam: string;
|
|
319
|
+
notNull: true;
|
|
320
|
+
hasDefault: false;
|
|
321
|
+
isPrimaryKey: false;
|
|
322
|
+
isAutoincrement: false;
|
|
323
|
+
hasRuntimeDefault: false;
|
|
324
|
+
enumValues: [string, ...string[]];
|
|
325
|
+
baseColumn: never;
|
|
326
|
+
identity: undefined;
|
|
327
|
+
generated: undefined;
|
|
328
|
+
}, {}, {
|
|
329
|
+
length: number | undefined;
|
|
330
|
+
}>;
|
|
331
|
+
nodeId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
332
|
+
name: "node_id";
|
|
333
|
+
tableName: "mcg_run_events";
|
|
334
|
+
dataType: "string";
|
|
335
|
+
columnType: "SQLiteText";
|
|
336
|
+
data: string;
|
|
337
|
+
driverParam: string;
|
|
338
|
+
notNull: false;
|
|
339
|
+
hasDefault: false;
|
|
340
|
+
isPrimaryKey: false;
|
|
341
|
+
isAutoincrement: false;
|
|
342
|
+
hasRuntimeDefault: false;
|
|
343
|
+
enumValues: [string, ...string[]];
|
|
344
|
+
baseColumn: never;
|
|
345
|
+
identity: undefined;
|
|
346
|
+
generated: undefined;
|
|
347
|
+
}, {}, {
|
|
348
|
+
length: number | undefined;
|
|
349
|
+
}>;
|
|
350
|
+
payload: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
351
|
+
name: "payload";
|
|
352
|
+
tableName: "mcg_run_events";
|
|
353
|
+
dataType: "string";
|
|
354
|
+
columnType: "SQLiteText";
|
|
355
|
+
data: string;
|
|
356
|
+
driverParam: string;
|
|
357
|
+
notNull: false;
|
|
358
|
+
hasDefault: false;
|
|
359
|
+
isPrimaryKey: false;
|
|
360
|
+
isAutoincrement: false;
|
|
361
|
+
hasRuntimeDefault: false;
|
|
362
|
+
enumValues: [string, ...string[]];
|
|
363
|
+
baseColumn: never;
|
|
364
|
+
identity: undefined;
|
|
365
|
+
generated: undefined;
|
|
366
|
+
}, {}, {
|
|
367
|
+
length: number | undefined;
|
|
368
|
+
}>;
|
|
369
|
+
timestamp: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
370
|
+
name: "timestamp";
|
|
371
|
+
tableName: "mcg_run_events";
|
|
372
|
+
dataType: "number";
|
|
373
|
+
columnType: "SQLiteInteger";
|
|
374
|
+
data: number;
|
|
375
|
+
driverParam: number;
|
|
376
|
+
notNull: true;
|
|
377
|
+
hasDefault: false;
|
|
378
|
+
isPrimaryKey: false;
|
|
379
|
+
isAutoincrement: false;
|
|
380
|
+
hasRuntimeDefault: false;
|
|
381
|
+
enumValues: undefined;
|
|
382
|
+
baseColumn: never;
|
|
383
|
+
identity: undefined;
|
|
384
|
+
generated: undefined;
|
|
385
|
+
}, {}, {}>;
|
|
386
|
+
};
|
|
387
|
+
dialect: "sqlite";
|
|
388
|
+
}>;
|
|
389
|
+
export declare const runSnapshots: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
|
|
390
|
+
name: "mcg_run_snapshots";
|
|
391
|
+
schema: undefined;
|
|
392
|
+
columns: {
|
|
393
|
+
id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
394
|
+
name: "id";
|
|
395
|
+
tableName: "mcg_run_snapshots";
|
|
396
|
+
dataType: "string";
|
|
397
|
+
columnType: "SQLiteText";
|
|
398
|
+
data: string;
|
|
399
|
+
driverParam: string;
|
|
400
|
+
notNull: true;
|
|
401
|
+
hasDefault: false;
|
|
402
|
+
isPrimaryKey: true;
|
|
403
|
+
isAutoincrement: false;
|
|
404
|
+
hasRuntimeDefault: false;
|
|
405
|
+
enumValues: [string, ...string[]];
|
|
406
|
+
baseColumn: never;
|
|
407
|
+
identity: undefined;
|
|
408
|
+
generated: undefined;
|
|
409
|
+
}, {}, {
|
|
410
|
+
length: number | undefined;
|
|
411
|
+
}>;
|
|
412
|
+
runId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
413
|
+
name: "run_id";
|
|
414
|
+
tableName: "mcg_run_snapshots";
|
|
415
|
+
dataType: "string";
|
|
416
|
+
columnType: "SQLiteText";
|
|
417
|
+
data: string;
|
|
418
|
+
driverParam: string;
|
|
419
|
+
notNull: true;
|
|
420
|
+
hasDefault: false;
|
|
421
|
+
isPrimaryKey: false;
|
|
422
|
+
isAutoincrement: false;
|
|
423
|
+
hasRuntimeDefault: false;
|
|
424
|
+
enumValues: [string, ...string[]];
|
|
425
|
+
baseColumn: never;
|
|
426
|
+
identity: undefined;
|
|
427
|
+
generated: undefined;
|
|
428
|
+
}, {}, {
|
|
429
|
+
length: number | undefined;
|
|
430
|
+
}>;
|
|
431
|
+
version: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
432
|
+
name: "version";
|
|
433
|
+
tableName: "mcg_run_snapshots";
|
|
434
|
+
dataType: "number";
|
|
435
|
+
columnType: "SQLiteInteger";
|
|
436
|
+
data: number;
|
|
437
|
+
driverParam: number;
|
|
438
|
+
notNull: true;
|
|
439
|
+
hasDefault: false;
|
|
440
|
+
isPrimaryKey: false;
|
|
441
|
+
isAutoincrement: false;
|
|
442
|
+
hasRuntimeDefault: false;
|
|
443
|
+
enumValues: undefined;
|
|
444
|
+
baseColumn: never;
|
|
445
|
+
identity: undefined;
|
|
446
|
+
generated: undefined;
|
|
447
|
+
}, {}, {}>;
|
|
448
|
+
nodeId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
449
|
+
name: "node_id";
|
|
450
|
+
tableName: "mcg_run_snapshots";
|
|
451
|
+
dataType: "string";
|
|
452
|
+
columnType: "SQLiteText";
|
|
453
|
+
data: string;
|
|
454
|
+
driverParam: string;
|
|
455
|
+
notNull: true;
|
|
456
|
+
hasDefault: false;
|
|
457
|
+
isPrimaryKey: false;
|
|
458
|
+
isAutoincrement: false;
|
|
459
|
+
hasRuntimeDefault: false;
|
|
460
|
+
enumValues: [string, ...string[]];
|
|
461
|
+
baseColumn: never;
|
|
462
|
+
identity: undefined;
|
|
463
|
+
generated: undefined;
|
|
464
|
+
}, {}, {
|
|
465
|
+
length: number | undefined;
|
|
466
|
+
}>;
|
|
467
|
+
ctx: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
468
|
+
name: "ctx";
|
|
469
|
+
tableName: "mcg_run_snapshots";
|
|
470
|
+
dataType: "string";
|
|
471
|
+
columnType: "SQLiteText";
|
|
472
|
+
data: string;
|
|
473
|
+
driverParam: string;
|
|
474
|
+
notNull: true;
|
|
475
|
+
hasDefault: false;
|
|
476
|
+
isPrimaryKey: false;
|
|
477
|
+
isAutoincrement: false;
|
|
478
|
+
hasRuntimeDefault: false;
|
|
479
|
+
enumValues: [string, ...string[]];
|
|
480
|
+
baseColumn: never;
|
|
481
|
+
identity: undefined;
|
|
482
|
+
generated: undefined;
|
|
483
|
+
}, {}, {
|
|
484
|
+
length: number | undefined;
|
|
485
|
+
}>;
|
|
486
|
+
timestamp: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
487
|
+
name: "timestamp";
|
|
488
|
+
tableName: "mcg_run_snapshots";
|
|
489
|
+
dataType: "number";
|
|
490
|
+
columnType: "SQLiteInteger";
|
|
491
|
+
data: number;
|
|
492
|
+
driverParam: number;
|
|
493
|
+
notNull: true;
|
|
494
|
+
hasDefault: false;
|
|
495
|
+
isPrimaryKey: false;
|
|
496
|
+
isAutoincrement: false;
|
|
497
|
+
hasRuntimeDefault: false;
|
|
498
|
+
enumValues: undefined;
|
|
499
|
+
baseColumn: never;
|
|
500
|
+
identity: undefined;
|
|
501
|
+
generated: undefined;
|
|
502
|
+
}, {}, {}>;
|
|
503
|
+
};
|
|
504
|
+
dialect: "sqlite";
|
|
505
|
+
}>;
|
|
506
|
+
export type RunRow = typeof runs.$inferSelect;
|
|
507
|
+
export type RunEventRow = typeof runEvents.$inferSelect;
|
|
508
|
+
export type RunSnapshotRow = typeof runSnapshots.$inferSelect;
|
package/src/schema.js
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Drizzle schema for MCG Run Store
|
|
4
|
+
*
|
|
5
|
+
* This schema is designed to work with both SQLite and Postgres.
|
|
6
|
+
* The SQLite version uses better-sqlite3, Postgres uses node-postgres.
|
|
7
|
+
*
|
|
8
|
+
* @packageDocumentation
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.runSnapshots = exports.runEvents = exports.runs = void 0;
|
|
12
|
+
const sqlite_core_1 = require("drizzle-orm/sqlite-core");
|
|
13
|
+
exports.runs = (0, sqlite_core_1.sqliteTable)('mcg_runs', {
|
|
14
|
+
id: (0, sqlite_core_1.text)('id').primaryKey(),
|
|
15
|
+
graphId: (0, sqlite_core_1.text)('graph_id').notNull(),
|
|
16
|
+
graphVersion: (0, sqlite_core_1.text)('graph_version'),
|
|
17
|
+
status: (0, sqlite_core_1.text)('status').notNull(),
|
|
18
|
+
currentNode: (0, sqlite_core_1.text)('current_node'),
|
|
19
|
+
eventSeq: (0, sqlite_core_1.integer)('event_seq').notNull().default(0),
|
|
20
|
+
initialCtx: (0, sqlite_core_1.text)('initial_ctx').notNull(), // JSON string
|
|
21
|
+
error: (0, sqlite_core_1.text)('error'), // JSON string
|
|
22
|
+
tags: (0, sqlite_core_1.text)('tags'), // JSON string
|
|
23
|
+
startedAt: (0, sqlite_core_1.integer)('started_at').notNull(), // Unix timestamp ms
|
|
24
|
+
updatedAt: (0, sqlite_core_1.integer)('updated_at').notNull(), // Unix timestamp ms
|
|
25
|
+
completedAt: (0, sqlite_core_1.integer)('completed_at'), // Unix timestamp ms
|
|
26
|
+
}, (table) => ({
|
|
27
|
+
graphIdIdx: (0, sqlite_core_1.index)('mcg_runs_graph_id_idx').on(table.graphId),
|
|
28
|
+
statusIdx: (0, sqlite_core_1.index)('mcg_runs_status_idx').on(table.status),
|
|
29
|
+
}));
|
|
30
|
+
exports.runEvents = (0, sqlite_core_1.sqliteTable)('mcg_run_events', {
|
|
31
|
+
id: (0, sqlite_core_1.text)('id').primaryKey(),
|
|
32
|
+
runId: (0, sqlite_core_1.text)('run_id').notNull().references(() => exports.runs.id, { onDelete: 'cascade' }),
|
|
33
|
+
sequence: (0, sqlite_core_1.integer)('sequence').notNull(),
|
|
34
|
+
schemaVersion: (0, sqlite_core_1.integer)('schema_version').notNull().default(1),
|
|
35
|
+
type: (0, sqlite_core_1.text)('type').notNull(),
|
|
36
|
+
nodeId: (0, sqlite_core_1.text)('node_id'),
|
|
37
|
+
payload: (0, sqlite_core_1.text)('payload'), // JSON string
|
|
38
|
+
timestamp: (0, sqlite_core_1.integer)('timestamp').notNull(), // Unix timestamp ms
|
|
39
|
+
}, (table) => ({
|
|
40
|
+
runIdSeqIdx: (0, sqlite_core_1.index)('mcg_run_events_run_seq_idx').on(table.runId, table.sequence),
|
|
41
|
+
runIdSeqUnique: (0, sqlite_core_1.uniqueIndex)('mcg_run_events_run_seq_unique').on(table.runId, table.sequence),
|
|
42
|
+
}));
|
|
43
|
+
exports.runSnapshots = (0, sqlite_core_1.sqliteTable)('mcg_run_snapshots', {
|
|
44
|
+
id: (0, sqlite_core_1.text)('id').primaryKey(),
|
|
45
|
+
runId: (0, sqlite_core_1.text)('run_id').notNull().references(() => exports.runs.id, { onDelete: 'cascade' }),
|
|
46
|
+
version: (0, sqlite_core_1.integer)('version').notNull(),
|
|
47
|
+
nodeId: (0, sqlite_core_1.text)('node_id').notNull(),
|
|
48
|
+
ctx: (0, sqlite_core_1.text)('ctx').notNull(), // JSON string
|
|
49
|
+
timestamp: (0, sqlite_core_1.integer)('timestamp').notNull(), // Unix timestamp ms
|
|
50
|
+
}, (table) => ({
|
|
51
|
+
runIdVersionIdx: (0, sqlite_core_1.index)('mcg_run_snapshots_run_version_idx').on(table.runId, table.version),
|
|
52
|
+
}));
|
|
53
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../../../libs/drift/drift-plugins/mcg-store-sqlite/src/schema.ts"],"names":[],"mappings":"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"}
|