@taskcast/sqlite 0.1.1 → 0.2.0
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/LICENSE +21 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/long-term.d.ts +1 -3
- package/dist/long-term.d.ts.map +1 -1
- package/dist/long-term.js +4 -67
- package/dist/long-term.js.map +1 -1
- package/dist/row-mappers.d.ts +1 -4
- package/dist/row-mappers.d.ts.map +1 -1
- package/dist/row-mappers.js +0 -46
- package/dist/row-mappers.js.map +1 -1
- package/dist/short-term.d.ts +1 -11
- package/dist/short-term.d.ts.map +1 -1
- package/dist/short-term.js +4 -174
- package/dist/short-term.js.map +1 -1
- package/migrations/001_initial.sql +1 -47
- package/package.json +9 -10
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 WEIGHTWAVE INC.
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/dist/index.d.ts
CHANGED
|
@@ -7,8 +7,8 @@ export interface SqliteAdapterOptions {
|
|
|
7
7
|
path?: string;
|
|
8
8
|
}
|
|
9
9
|
export declare function createSqliteAdapters(options?: SqliteAdapterOptions): {
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
shortTerm: SqliteShortTermStore;
|
|
11
|
+
longTerm: SqliteLongTermStore;
|
|
12
12
|
db: DatabaseType;
|
|
13
13
|
};
|
|
14
14
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAEpD,OAAiB,EAAE,KAAK,QAAQ,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAIxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAEpD,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,oBAAyB,GAAG;IACxE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAEpD,OAAiB,EAAE,KAAK,QAAQ,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAIxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAEpD,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,oBAAyB,GAAG;IACxE,SAAS,EAAE,oBAAoB,CAAA;IAC/B,QAAQ,EAAE,mBAAmB,CAAA;IAC7B,EAAE,EAAE,YAAY,CAAA;CACjB,CAeA"}
|
package/dist/index.js
CHANGED
|
@@ -15,8 +15,8 @@ export function createSqliteAdapters(options = {}) {
|
|
|
15
15
|
const migration = readFileSync(join(__dirname, '../migrations/001_initial.sql'), 'utf8');
|
|
16
16
|
db.exec(migration);
|
|
17
17
|
return {
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
shortTerm: new SqliteShortTermStore(db),
|
|
19
|
+
longTerm: new SqliteLongTermStore(db),
|
|
20
20
|
db,
|
|
21
21
|
};
|
|
22
22
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAEpD,OAAO,QAA2C,MAAM,gBAAgB,CAAA;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAMpD,MAAM,UAAU,oBAAoB,CAAC,UAAgC,EAAE;IAKrE,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,eAAe,CAAA;IACrF,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAA;IAC/B,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAA;IAC/B,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAA;IAE9B,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IACzD,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,+BAA+B,CAAC,EAAE,MAAM,CAAC,CAAA;IACxF,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAElB,OAAO;QACL,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAEpD,OAAO,QAA2C,MAAM,gBAAgB,CAAA;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAMpD,MAAM,UAAU,oBAAoB,CAAC,UAAgC,EAAE;IAKrE,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,eAAe,CAAA;IACrF,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAA;IAC/B,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAA;IAC/B,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAA;IAE9B,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IACzD,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,+BAA+B,CAAC,EAAE,MAAM,CAAC,CAAA;IACxF,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAElB,OAAO;QACL,SAAS,EAAE,IAAI,oBAAoB,CAAC,EAAE,CAAC;QACvC,QAAQ,EAAE,IAAI,mBAAmB,CAAC,EAAE,CAAC;QACrC,EAAE;KACH,CAAA;AACH,CAAC"}
|
package/dist/long-term.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type Database from 'better-sqlite3';
|
|
2
|
-
import type { Task, TaskEvent, LongTermStore, EventQueryOptions
|
|
2
|
+
import type { Task, TaskEvent, LongTermStore, EventQueryOptions } from '@taskcast/core';
|
|
3
3
|
export declare class SqliteLongTermStore implements LongTermStore {
|
|
4
4
|
private db;
|
|
5
5
|
constructor(db: Database.Database);
|
|
@@ -7,7 +7,5 @@ export declare class SqliteLongTermStore implements LongTermStore {
|
|
|
7
7
|
getTask(taskId: string): Promise<Task | null>;
|
|
8
8
|
saveEvent(event: TaskEvent): Promise<void>;
|
|
9
9
|
getEvents(taskId: string, opts?: EventQueryOptions): Promise<TaskEvent[]>;
|
|
10
|
-
saveWorkerEvent(event: WorkerAuditEvent): Promise<void>;
|
|
11
|
-
getWorkerEvents(workerId: string, opts?: EventQueryOptions): Promise<WorkerAuditEvent[]>;
|
|
12
10
|
}
|
|
13
11
|
//# sourceMappingURL=long-term.d.ts.map
|
package/dist/long-term.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"long-term.d.ts","sourceRoot":"","sources":["../src/long-term.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAC1C,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"long-term.d.ts","sourceRoot":"","sources":["../src/long-term.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAC1C,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAKvF,qBAAa,mBAAoB,YAAW,aAAa;IAC3C,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAEnC,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAqCnC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAQ7C,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB1C,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;CAgDhF"}
|
package/dist/long-term.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { rowToTask, rowToEvent
|
|
1
|
+
import { rowToTask, rowToEvent } from './row-mappers.js';
|
|
2
2
|
// ─── SqliteLongTermStore ──────────────────────────────────────────────────
|
|
3
3
|
export class SqliteLongTermStore {
|
|
4
4
|
db;
|
|
@@ -7,8 +7,8 @@ export class SqliteLongTermStore {
|
|
|
7
7
|
}
|
|
8
8
|
async saveTask(task) {
|
|
9
9
|
const stmt = this.db.prepare(`
|
|
10
|
-
INSERT INTO taskcast_tasks (id, type, status, params, result, error, metadata, auth_config, webhooks, cleanup, created_at, updated_at, completed_at, ttl
|
|
11
|
-
VALUES (@id, @type, @status, @params, @result, @error, @metadata, @auth_config, @webhooks, @cleanup, @created_at, @updated_at, @completed_at, @ttl
|
|
10
|
+
INSERT INTO taskcast_tasks (id, type, status, params, result, error, metadata, auth_config, webhooks, cleanup, created_at, updated_at, completed_at, ttl)
|
|
11
|
+
VALUES (@id, @type, @status, @params, @result, @error, @metadata, @auth_config, @webhooks, @cleanup, @created_at, @updated_at, @completed_at, @ttl)
|
|
12
12
|
ON CONFLICT (id) DO UPDATE SET
|
|
13
13
|
type = excluded.type,
|
|
14
14
|
status = excluded.status,
|
|
@@ -21,12 +21,7 @@ export class SqliteLongTermStore {
|
|
|
21
21
|
cleanup = excluded.cleanup,
|
|
22
22
|
updated_at = excluded.updated_at,
|
|
23
23
|
completed_at = excluded.completed_at,
|
|
24
|
-
ttl = excluded.ttl
|
|
25
|
-
tags = excluded.tags,
|
|
26
|
-
assign_mode = excluded.assign_mode,
|
|
27
|
-
cost = excluded.cost,
|
|
28
|
-
assigned_worker = excluded.assigned_worker,
|
|
29
|
-
disconnect_policy = excluded.disconnect_policy
|
|
24
|
+
ttl = excluded.ttl
|
|
30
25
|
`);
|
|
31
26
|
stmt.run({
|
|
32
27
|
id: task.id,
|
|
@@ -43,11 +38,6 @@ export class SqliteLongTermStore {
|
|
|
43
38
|
updated_at: task.updatedAt,
|
|
44
39
|
completed_at: task.completedAt ?? null,
|
|
45
40
|
ttl: task.ttl ?? null,
|
|
46
|
-
tags: task.tags ? JSON.stringify(task.tags) : null,
|
|
47
|
-
assign_mode: task.assignMode ?? null,
|
|
48
|
-
cost: task.cost ?? null,
|
|
49
|
-
assigned_worker: task.assignedWorker ?? null,
|
|
50
|
-
disconnect_policy: task.disconnectPolicy ?? null,
|
|
51
41
|
});
|
|
52
42
|
}
|
|
53
43
|
async getTask(taskId) {
|
|
@@ -118,58 +108,5 @@ export class SqliteLongTermStore {
|
|
|
118
108
|
const rows = this.db.prepare(sql).all(...params);
|
|
119
109
|
return rows.map(rowToEvent);
|
|
120
110
|
}
|
|
121
|
-
// ─── Worker audit events ─────────────────────────────────────────────────
|
|
122
|
-
async saveWorkerEvent(event) {
|
|
123
|
-
this.db
|
|
124
|
-
.prepare(`INSERT INTO taskcast_worker_events (id, worker_id, timestamp, action, data)
|
|
125
|
-
VALUES (@id, @worker_id, @timestamp, @action, @data)
|
|
126
|
-
ON CONFLICT (id) DO NOTHING`)
|
|
127
|
-
.run({
|
|
128
|
-
id: event.id,
|
|
129
|
-
worker_id: event.workerId,
|
|
130
|
-
timestamp: event.timestamp,
|
|
131
|
-
action: event.action,
|
|
132
|
-
data: event.data ? JSON.stringify(event.data) : null,
|
|
133
|
-
});
|
|
134
|
-
}
|
|
135
|
-
async getWorkerEvents(workerId, opts) {
|
|
136
|
-
const since = opts?.since;
|
|
137
|
-
const limit = opts?.limit;
|
|
138
|
-
let sql;
|
|
139
|
-
const params = [workerId];
|
|
140
|
-
if (since?.timestamp !== undefined) {
|
|
141
|
-
sql = `
|
|
142
|
-
SELECT * FROM taskcast_worker_events
|
|
143
|
-
WHERE worker_id = ? AND timestamp > ?
|
|
144
|
-
ORDER BY timestamp ASC
|
|
145
|
-
`;
|
|
146
|
-
params.push(since.timestamp);
|
|
147
|
-
}
|
|
148
|
-
else if (since?.id) {
|
|
149
|
-
sql = `
|
|
150
|
-
SELECT * FROM taskcast_worker_events
|
|
151
|
-
WHERE worker_id = ?
|
|
152
|
-
AND timestamp > COALESCE(
|
|
153
|
-
(SELECT timestamp FROM taskcast_worker_events WHERE id = ?),
|
|
154
|
-
0
|
|
155
|
-
)
|
|
156
|
-
ORDER BY timestamp ASC
|
|
157
|
-
`;
|
|
158
|
-
params.push(since.id);
|
|
159
|
-
}
|
|
160
|
-
else {
|
|
161
|
-
sql = `
|
|
162
|
-
SELECT * FROM taskcast_worker_events
|
|
163
|
-
WHERE worker_id = ?
|
|
164
|
-
ORDER BY timestamp ASC
|
|
165
|
-
`;
|
|
166
|
-
}
|
|
167
|
-
if (limit) {
|
|
168
|
-
sql += ' LIMIT ?';
|
|
169
|
-
params.push(limit);
|
|
170
|
-
}
|
|
171
|
-
const rows = this.db.prepare(sql).all(...params);
|
|
172
|
-
return rows.map(rowToWorkerEvent);
|
|
173
|
-
}
|
|
174
111
|
}
|
|
175
112
|
//# sourceMappingURL=long-term.js.map
|
package/dist/long-term.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"long-term.js","sourceRoot":"","sources":["../src/long-term.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"long-term.js","sourceRoot":"","sources":["../src/long-term.ts"],"names":[],"mappings":"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"}
|
package/dist/row-mappers.d.ts
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
import type { Task, TaskEvent
|
|
1
|
+
import type { Task, TaskEvent } from '@taskcast/core';
|
|
2
2
|
export declare function rowToTask(row: Record<string, unknown>): Task;
|
|
3
|
-
export declare function rowToWorker(row: Record<string, unknown>): Worker;
|
|
4
|
-
export declare function rowToWorkerAssignment(row: Record<string, unknown>): WorkerAssignment;
|
|
5
|
-
export declare function rowToWorkerEvent(row: Record<string, unknown>): WorkerAuditEvent;
|
|
6
3
|
export declare function rowToEvent(row: Record<string, unknown>): TaskEvent;
|
|
7
4
|
//# sourceMappingURL=row-mappers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"row-mappers.d.ts","sourceRoot":"","sources":["../src/row-mappers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"row-mappers.d.ts","sourceRoot":"","sources":["../src/row-mappers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAc,MAAM,gBAAgB,CAAA;AAEjE,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAoB5D;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAelE"}
|
package/dist/row-mappers.js
CHANGED
|
@@ -25,54 +25,8 @@ export function rowToTask(row) {
|
|
|
25
25
|
task.completedAt = row['completed_at'];
|
|
26
26
|
if (row['ttl'] != null)
|
|
27
27
|
task.ttl = row['ttl'];
|
|
28
|
-
if (row['tags'] != null)
|
|
29
|
-
task.tags = JSON.parse(row['tags']);
|
|
30
|
-
if (row['assign_mode'] != null)
|
|
31
|
-
task.assignMode = row['assign_mode'];
|
|
32
|
-
if (row['cost'] != null)
|
|
33
|
-
task.cost = row['cost'];
|
|
34
|
-
if (row['assigned_worker'] != null)
|
|
35
|
-
task.assignedWorker = row['assigned_worker'];
|
|
36
|
-
if (row['disconnect_policy'] != null)
|
|
37
|
-
task.disconnectPolicy = row['disconnect_policy'];
|
|
38
28
|
return task;
|
|
39
29
|
}
|
|
40
|
-
export function rowToWorker(row) {
|
|
41
|
-
const worker = {
|
|
42
|
-
id: row['id'],
|
|
43
|
-
status: row['status'],
|
|
44
|
-
matchRule: JSON.parse(row['match_rule']),
|
|
45
|
-
capacity: row['capacity'],
|
|
46
|
-
usedSlots: row['used_slots'],
|
|
47
|
-
weight: row['weight'],
|
|
48
|
-
connectionMode: row['connection_mode'],
|
|
49
|
-
connectedAt: row['connected_at'],
|
|
50
|
-
lastHeartbeatAt: row['last_heartbeat_at'],
|
|
51
|
-
};
|
|
52
|
-
if (row['metadata'] != null)
|
|
53
|
-
worker.metadata = JSON.parse(row['metadata']);
|
|
54
|
-
return worker;
|
|
55
|
-
}
|
|
56
|
-
export function rowToWorkerAssignment(row) {
|
|
57
|
-
return {
|
|
58
|
-
taskId: row['task_id'],
|
|
59
|
-
workerId: row['worker_id'],
|
|
60
|
-
cost: row['cost'],
|
|
61
|
-
assignedAt: row['assigned_at'],
|
|
62
|
-
status: row['status'],
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
export function rowToWorkerEvent(row) {
|
|
66
|
-
const event = {
|
|
67
|
-
id: row['id'],
|
|
68
|
-
workerId: row['worker_id'],
|
|
69
|
-
timestamp: row['timestamp'],
|
|
70
|
-
action: row['action'],
|
|
71
|
-
};
|
|
72
|
-
if (row['data'] != null)
|
|
73
|
-
event.data = JSON.parse(row['data']);
|
|
74
|
-
return event;
|
|
75
|
-
}
|
|
76
30
|
export function rowToEvent(row) {
|
|
77
31
|
const event = {
|
|
78
32
|
id: row['id'],
|
package/dist/row-mappers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"row-mappers.js","sourceRoot":"","sources":["../src/row-mappers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"row-mappers.js","sourceRoot":"","sources":["../src/row-mappers.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,SAAS,CAAC,GAA4B;IACpD,MAAM,IAAI,GAAS;QACjB,EAAE,EAAE,GAAG,CAAC,IAAI,CAAW;QACvB,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAmB;QACvC,SAAS,EAAE,GAAG,CAAC,YAAY,CAAW;QACtC,SAAS,EAAE,GAAG,CAAC,YAAY,CAAW;KACvC,CAAA;IAED,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI;QAAE,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAW,CAAA;IAC1D,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI;QAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAW,CAAC,CAAA;IAC5E,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI;QAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAW,CAAC,CAAA;IAC5E,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI;QAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAW,CAAC,CAAA;IACzE,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI;QAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAW,CAAC,CAAA;IAClF,IAAI,GAAG,CAAC,aAAa,CAAC,IAAI,IAAI;QAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAW,CAAC,CAAA;IAC1F,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI;QAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAW,CAAC,CAAA;IAClF,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI;QAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAW,CAAC,CAAA;IAC/E,IAAI,GAAG,CAAC,cAAc,CAAC,IAAI,IAAI;QAAE,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,cAAc,CAAW,CAAA;IACjF,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI;QAAE,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,KAAK,CAAW,CAAA;IAEvD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAA4B;IACrD,MAAM,KAAK,GAAc;QACvB,EAAE,EAAE,GAAG,CAAC,IAAI,CAAW;QACvB,MAAM,EAAE,GAAG,CAAC,SAAS,CAAW;QAChC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAW;QAC3B,SAAS,EAAE,GAAG,CAAC,WAAW,CAAW;QACrC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAW;QAC3B,KAAK,EAAE,GAAG,CAAC,OAAO,CAAuB;QACzC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAW,CAAC,CAAC,CAAC,CAAC,IAAI;KACrE,CAAA;IAED,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,IAAI;QAAE,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC,WAAW,CAAW,CAAA;IACzE,IAAI,GAAG,CAAC,aAAa,CAAC,IAAI,IAAI;QAAE,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC,aAAa,CAAe,CAAA;IAEnF,OAAO,KAAK,CAAA;AACd,CAAC"}
|
package/dist/short-term.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type Database from 'better-sqlite3';
|
|
2
|
-
import type { Task, TaskEvent, ShortTermStore, EventQueryOptions
|
|
2
|
+
import type { Task, TaskEvent, ShortTermStore, EventQueryOptions } from '@taskcast/core';
|
|
3
3
|
export declare class SqliteShortTermStore implements ShortTermStore {
|
|
4
4
|
private db;
|
|
5
5
|
constructor(db: Database.Database);
|
|
@@ -12,15 +12,5 @@ export declare class SqliteShortTermStore implements ShortTermStore {
|
|
|
12
12
|
getSeriesLatest(taskId: string, seriesId: string): Promise<TaskEvent | null>;
|
|
13
13
|
setSeriesLatest(taskId: string, seriesId: string, event: TaskEvent): Promise<void>;
|
|
14
14
|
replaceLastSeriesEvent(taskId: string, seriesId: string, event: TaskEvent): Promise<void>;
|
|
15
|
-
listTasks(filter: TaskFilter): Promise<Task[]>;
|
|
16
|
-
saveWorker(worker: Worker): Promise<void>;
|
|
17
|
-
getWorker(workerId: string): Promise<Worker | null>;
|
|
18
|
-
listWorkers(filter?: WorkerFilter): Promise<Worker[]>;
|
|
19
|
-
deleteWorker(workerId: string): Promise<void>;
|
|
20
|
-
claimTask(taskId: string, workerId: string, cost: number): Promise<boolean>;
|
|
21
|
-
addAssignment(assignment: WorkerAssignment): Promise<void>;
|
|
22
|
-
removeAssignment(taskId: string): Promise<void>;
|
|
23
|
-
getWorkerAssignments(workerId: string): Promise<WorkerAssignment[]>;
|
|
24
|
-
getTaskAssignment(taskId: string): Promise<WorkerAssignment | null>;
|
|
25
15
|
}
|
|
26
16
|
//# sourceMappingURL=short-term.d.ts.map
|
package/dist/short-term.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"short-term.d.ts","sourceRoot":"","sources":["../src/short-term.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAC1C,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"short-term.d.ts","sourceRoot":"","sources":["../src/short-term.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAC1C,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAKxF,qBAAa,oBAAqB,YAAW,cAAc;IAC7C,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAEnC,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAqCnC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAQ7C,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAa1C,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB5D,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAqDzE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3D,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAQ5E,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAUlF,sBAAsB,CAC1B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,SAAS,GACf,OAAO,CAAC,IAAI,CAAC;CA4BjB"}
|
package/dist/short-term.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { rowToTask, rowToEvent
|
|
1
|
+
import { rowToTask, rowToEvent } from './row-mappers.js';
|
|
2
2
|
// ─── SqliteShortTermStore ─────────────────────────────────────────────────
|
|
3
3
|
export class SqliteShortTermStore {
|
|
4
4
|
db;
|
|
@@ -7,8 +7,8 @@ export class SqliteShortTermStore {
|
|
|
7
7
|
}
|
|
8
8
|
async saveTask(task) {
|
|
9
9
|
const stmt = this.db.prepare(`
|
|
10
|
-
INSERT INTO taskcast_tasks (id, type, status, params, result, error, metadata, auth_config, webhooks, cleanup, created_at, updated_at, completed_at, ttl
|
|
11
|
-
VALUES (@id, @type, @status, @params, @result, @error, @metadata, @auth_config, @webhooks, @cleanup, @created_at, @updated_at, @completed_at, @ttl
|
|
10
|
+
INSERT INTO taskcast_tasks (id, type, status, params, result, error, metadata, auth_config, webhooks, cleanup, created_at, updated_at, completed_at, ttl)
|
|
11
|
+
VALUES (@id, @type, @status, @params, @result, @error, @metadata, @auth_config, @webhooks, @cleanup, @created_at, @updated_at, @completed_at, @ttl)
|
|
12
12
|
ON CONFLICT (id) DO UPDATE SET
|
|
13
13
|
type = excluded.type,
|
|
14
14
|
status = excluded.status,
|
|
@@ -21,12 +21,7 @@ export class SqliteShortTermStore {
|
|
|
21
21
|
cleanup = excluded.cleanup,
|
|
22
22
|
updated_at = excluded.updated_at,
|
|
23
23
|
completed_at = excluded.completed_at,
|
|
24
|
-
ttl = excluded.ttl
|
|
25
|
-
tags = excluded.tags,
|
|
26
|
-
assign_mode = excluded.assign_mode,
|
|
27
|
-
cost = excluded.cost,
|
|
28
|
-
assigned_worker = excluded.assigned_worker,
|
|
29
|
-
disconnect_policy = excluded.disconnect_policy
|
|
24
|
+
ttl = excluded.ttl
|
|
30
25
|
`);
|
|
31
26
|
stmt.run({
|
|
32
27
|
id: task.id,
|
|
@@ -43,11 +38,6 @@ export class SqliteShortTermStore {
|
|
|
43
38
|
updated_at: task.updatedAt,
|
|
44
39
|
completed_at: task.completedAt ?? null,
|
|
45
40
|
ttl: task.ttl ?? null,
|
|
46
|
-
tags: task.tags ? JSON.stringify(task.tags) : null,
|
|
47
|
-
assign_mode: task.assignMode ?? null,
|
|
48
|
-
cost: task.cost ?? null,
|
|
49
|
-
assigned_worker: task.assignedWorker ?? null,
|
|
50
|
-
disconnect_policy: task.disconnectPolicy ?? null,
|
|
51
41
|
});
|
|
52
42
|
}
|
|
53
43
|
async getTask(taskId) {
|
|
@@ -171,165 +161,5 @@ export class SqliteShortTermStore {
|
|
|
171
161
|
}
|
|
172
162
|
await this.setSeriesLatest(taskId, seriesId, event);
|
|
173
163
|
}
|
|
174
|
-
// ─── Task query ──────────────────────────────────────────────────────────
|
|
175
|
-
async listTasks(filter) {
|
|
176
|
-
let sql = 'SELECT * FROM taskcast_tasks WHERE 1=1';
|
|
177
|
-
const params = [];
|
|
178
|
-
if (filter.status?.length) {
|
|
179
|
-
sql += ` AND status IN (${filter.status.map(() => '?').join(', ')})`;
|
|
180
|
-
params.push(...filter.status);
|
|
181
|
-
}
|
|
182
|
-
if (filter.types?.length) {
|
|
183
|
-
sql += ` AND type IN (${filter.types.map(() => '?').join(', ')})`;
|
|
184
|
-
params.push(...filter.types);
|
|
185
|
-
}
|
|
186
|
-
if (filter.assignMode?.length) {
|
|
187
|
-
sql += ` AND assign_mode IN (${filter.assignMode.map(() => '?').join(', ')})`;
|
|
188
|
-
params.push(...filter.assignMode);
|
|
189
|
-
}
|
|
190
|
-
if (filter.excludeTaskIds?.length) {
|
|
191
|
-
sql += ` AND id NOT IN (${filter.excludeTaskIds.map(() => '?').join(', ')})`;
|
|
192
|
-
params.push(...filter.excludeTaskIds);
|
|
193
|
-
}
|
|
194
|
-
if (filter.limit !== undefined) {
|
|
195
|
-
sql += ' LIMIT ?';
|
|
196
|
-
params.push(filter.limit);
|
|
197
|
-
}
|
|
198
|
-
const rows = this.db.prepare(sql).all(...params);
|
|
199
|
-
let tasks = rows.map(rowToTask);
|
|
200
|
-
// Tag filtering is done in-memory because tags are stored as JSON text
|
|
201
|
-
if (filter.tags) {
|
|
202
|
-
const { all, any, none } = filter.tags;
|
|
203
|
-
tasks = tasks.filter((t) => {
|
|
204
|
-
const taskTags = t.tags ?? [];
|
|
205
|
-
if (all && !all.every((tag) => taskTags.includes(tag)))
|
|
206
|
-
return false;
|
|
207
|
-
if (any && !any.some((tag) => taskTags.includes(tag)))
|
|
208
|
-
return false;
|
|
209
|
-
if (none && none.some((tag) => taskTags.includes(tag)))
|
|
210
|
-
return false;
|
|
211
|
-
return true;
|
|
212
|
-
});
|
|
213
|
-
}
|
|
214
|
-
return tasks;
|
|
215
|
-
}
|
|
216
|
-
// ─── Worker state ────────────────────────────────────────────────────────
|
|
217
|
-
async saveWorker(worker) {
|
|
218
|
-
this.db
|
|
219
|
-
.prepare(`INSERT INTO taskcast_workers (id, status, match_rule, capacity, used_slots, weight, connection_mode, connected_at, last_heartbeat_at, metadata)
|
|
220
|
-
VALUES (@id, @status, @match_rule, @capacity, @used_slots, @weight, @connection_mode, @connected_at, @last_heartbeat_at, @metadata)
|
|
221
|
-
ON CONFLICT (id) DO UPDATE SET
|
|
222
|
-
status = excluded.status,
|
|
223
|
-
match_rule = excluded.match_rule,
|
|
224
|
-
capacity = excluded.capacity,
|
|
225
|
-
used_slots = excluded.used_slots,
|
|
226
|
-
weight = excluded.weight,
|
|
227
|
-
connection_mode = excluded.connection_mode,
|
|
228
|
-
connected_at = excluded.connected_at,
|
|
229
|
-
last_heartbeat_at = excluded.last_heartbeat_at,
|
|
230
|
-
metadata = excluded.metadata`)
|
|
231
|
-
.run({
|
|
232
|
-
id: worker.id,
|
|
233
|
-
status: worker.status,
|
|
234
|
-
match_rule: JSON.stringify(worker.matchRule),
|
|
235
|
-
capacity: worker.capacity,
|
|
236
|
-
used_slots: worker.usedSlots,
|
|
237
|
-
weight: worker.weight,
|
|
238
|
-
connection_mode: worker.connectionMode,
|
|
239
|
-
connected_at: worker.connectedAt,
|
|
240
|
-
last_heartbeat_at: worker.lastHeartbeatAt,
|
|
241
|
-
metadata: worker.metadata ? JSON.stringify(worker.metadata) : null,
|
|
242
|
-
});
|
|
243
|
-
}
|
|
244
|
-
async getWorker(workerId) {
|
|
245
|
-
const row = this.db
|
|
246
|
-
.prepare('SELECT * FROM taskcast_workers WHERE id = ?')
|
|
247
|
-
.get(workerId);
|
|
248
|
-
return row ? rowToWorker(row) : null;
|
|
249
|
-
}
|
|
250
|
-
async listWorkers(filter) {
|
|
251
|
-
let sql = 'SELECT * FROM taskcast_workers WHERE 1=1';
|
|
252
|
-
const params = [];
|
|
253
|
-
if (filter?.status?.length) {
|
|
254
|
-
sql += ` AND status IN (${filter.status.map(() => '?').join(', ')})`;
|
|
255
|
-
params.push(...filter.status);
|
|
256
|
-
}
|
|
257
|
-
if (filter?.connectionMode?.length) {
|
|
258
|
-
sql += ` AND connection_mode IN (${filter.connectionMode.map(() => '?').join(', ')})`;
|
|
259
|
-
params.push(...filter.connectionMode);
|
|
260
|
-
}
|
|
261
|
-
const rows = this.db.prepare(sql).all(...params);
|
|
262
|
-
return rows.map(rowToWorker);
|
|
263
|
-
}
|
|
264
|
-
async deleteWorker(workerId) {
|
|
265
|
-
this.db.prepare('DELETE FROM taskcast_workers WHERE id = ?').run(workerId);
|
|
266
|
-
}
|
|
267
|
-
// ─── Atomic claim ────────────────────────────────────────────────────────
|
|
268
|
-
async claimTask(taskId, workerId, cost) {
|
|
269
|
-
// SQLite is single-writer, so a transaction provides atomicity.
|
|
270
|
-
const claim = this.db.transaction(() => {
|
|
271
|
-
const workerRow = this.db
|
|
272
|
-
.prepare('SELECT * FROM taskcast_workers WHERE id = ?')
|
|
273
|
-
.get(workerId);
|
|
274
|
-
if (!workerRow)
|
|
275
|
-
return false;
|
|
276
|
-
const worker = rowToWorker(workerRow);
|
|
277
|
-
if (worker.usedSlots + cost > worker.capacity)
|
|
278
|
-
return false;
|
|
279
|
-
const taskRow = this.db
|
|
280
|
-
.prepare('SELECT * FROM taskcast_tasks WHERE id = ?')
|
|
281
|
-
.get(taskId);
|
|
282
|
-
if (!taskRow)
|
|
283
|
-
return false;
|
|
284
|
-
const task = rowToTask(taskRow);
|
|
285
|
-
if (task.status !== 'pending' && task.status !== 'assigned')
|
|
286
|
-
return false;
|
|
287
|
-
// Update task
|
|
288
|
-
this.db
|
|
289
|
-
.prepare(`UPDATE taskcast_tasks
|
|
290
|
-
SET status = 'assigned', assigned_worker = ?, cost = ?, updated_at = ?
|
|
291
|
-
WHERE id = ?`)
|
|
292
|
-
.run(workerId, cost, Date.now(), taskId);
|
|
293
|
-
// Update worker used slots
|
|
294
|
-
this.db
|
|
295
|
-
.prepare('UPDATE taskcast_workers SET used_slots = ? WHERE id = ?')
|
|
296
|
-
.run(worker.usedSlots + cost, workerId);
|
|
297
|
-
return true;
|
|
298
|
-
});
|
|
299
|
-
return claim();
|
|
300
|
-
}
|
|
301
|
-
// ─── Worker assignments ──────────────────────────────────────────────────
|
|
302
|
-
async addAssignment(assignment) {
|
|
303
|
-
this.db
|
|
304
|
-
.prepare(`INSERT INTO taskcast_worker_assignments (task_id, worker_id, cost, assigned_at, status)
|
|
305
|
-
VALUES (@task_id, @worker_id, @cost, @assigned_at, @status)
|
|
306
|
-
ON CONFLICT (task_id) DO UPDATE SET
|
|
307
|
-
worker_id = excluded.worker_id,
|
|
308
|
-
cost = excluded.cost,
|
|
309
|
-
assigned_at = excluded.assigned_at,
|
|
310
|
-
status = excluded.status`)
|
|
311
|
-
.run({
|
|
312
|
-
task_id: assignment.taskId,
|
|
313
|
-
worker_id: assignment.workerId,
|
|
314
|
-
cost: assignment.cost,
|
|
315
|
-
assigned_at: assignment.assignedAt,
|
|
316
|
-
status: assignment.status,
|
|
317
|
-
});
|
|
318
|
-
}
|
|
319
|
-
async removeAssignment(taskId) {
|
|
320
|
-
this.db.prepare('DELETE FROM taskcast_worker_assignments WHERE task_id = ?').run(taskId);
|
|
321
|
-
}
|
|
322
|
-
async getWorkerAssignments(workerId) {
|
|
323
|
-
const rows = this.db
|
|
324
|
-
.prepare('SELECT * FROM taskcast_worker_assignments WHERE worker_id = ?')
|
|
325
|
-
.all(workerId);
|
|
326
|
-
return rows.map(rowToWorkerAssignment);
|
|
327
|
-
}
|
|
328
|
-
async getTaskAssignment(taskId) {
|
|
329
|
-
const row = this.db
|
|
330
|
-
.prepare('SELECT * FROM taskcast_worker_assignments WHERE task_id = ?')
|
|
331
|
-
.get(taskId);
|
|
332
|
-
return row ? rowToWorkerAssignment(row) : null;
|
|
333
|
-
}
|
|
334
164
|
}
|
|
335
165
|
//# sourceMappingURL=short-term.js.map
|
package/dist/short-term.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"short-term.js","sourceRoot":"","sources":["../src/short-term.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"short-term.js","sourceRoot":"","sources":["../src/short-term.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,12 +12,7 @@ CREATE TABLE IF NOT EXISTS taskcast_tasks (
|
|
|
12
12
|
created_at INTEGER NOT NULL,
|
|
13
13
|
updated_at INTEGER NOT NULL,
|
|
14
14
|
completed_at INTEGER,
|
|
15
|
-
ttl INTEGER
|
|
16
|
-
tags TEXT,
|
|
17
|
-
assign_mode TEXT,
|
|
18
|
-
cost INTEGER,
|
|
19
|
-
assigned_worker TEXT,
|
|
20
|
-
disconnect_policy TEXT
|
|
15
|
+
ttl INTEGER
|
|
21
16
|
);
|
|
22
17
|
|
|
23
18
|
CREATE TABLE IF NOT EXISTS taskcast_events (
|
|
@@ -47,44 +42,3 @@ CREATE TABLE IF NOT EXISTS taskcast_index_counters (
|
|
|
47
42
|
|
|
48
43
|
CREATE INDEX IF NOT EXISTS idx_events_task_idx ON taskcast_events(task_id, idx);
|
|
49
44
|
CREATE INDEX IF NOT EXISTS idx_events_task_ts ON taskcast_events(task_id, timestamp);
|
|
50
|
-
|
|
51
|
-
-- Worker assignment columns on tasks
|
|
52
|
-
-- SQLite does not support ADD COLUMN IF NOT EXISTS, so we use CREATE TABLE IF NOT EXISTS
|
|
53
|
-
-- and these columns are added to the initial schema for new databases.
|
|
54
|
-
-- For existing databases, a separate migration would be needed.
|
|
55
|
-
|
|
56
|
-
-- Workers table
|
|
57
|
-
CREATE TABLE IF NOT EXISTS taskcast_workers (
|
|
58
|
-
id TEXT PRIMARY KEY,
|
|
59
|
-
status TEXT NOT NULL,
|
|
60
|
-
match_rule TEXT NOT NULL,
|
|
61
|
-
capacity INTEGER NOT NULL,
|
|
62
|
-
used_slots INTEGER NOT NULL,
|
|
63
|
-
weight INTEGER NOT NULL,
|
|
64
|
-
connection_mode TEXT NOT NULL,
|
|
65
|
-
connected_at INTEGER NOT NULL,
|
|
66
|
-
last_heartbeat_at INTEGER NOT NULL,
|
|
67
|
-
metadata TEXT
|
|
68
|
-
);
|
|
69
|
-
|
|
70
|
-
-- Worker assignments table
|
|
71
|
-
CREATE TABLE IF NOT EXISTS taskcast_worker_assignments (
|
|
72
|
-
task_id TEXT PRIMARY KEY,
|
|
73
|
-
worker_id TEXT NOT NULL,
|
|
74
|
-
cost INTEGER NOT NULL,
|
|
75
|
-
assigned_at INTEGER NOT NULL,
|
|
76
|
-
status TEXT NOT NULL
|
|
77
|
-
);
|
|
78
|
-
|
|
79
|
-
CREATE INDEX IF NOT EXISTS idx_worker_assignments_worker_id ON taskcast_worker_assignments(worker_id);
|
|
80
|
-
|
|
81
|
-
-- Worker audit events table
|
|
82
|
-
CREATE TABLE IF NOT EXISTS taskcast_worker_events (
|
|
83
|
-
id TEXT PRIMARY KEY,
|
|
84
|
-
worker_id TEXT NOT NULL,
|
|
85
|
-
timestamp INTEGER NOT NULL,
|
|
86
|
-
action TEXT NOT NULL,
|
|
87
|
-
data TEXT
|
|
88
|
-
);
|
|
89
|
-
|
|
90
|
-
CREATE INDEX IF NOT EXISTS idx_worker_events_worker_id ON taskcast_worker_events(worker_id, timestamp);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@taskcast/sqlite",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "SQLite local storage adapter for Taskcast.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -26,22 +26,21 @@
|
|
|
26
26
|
}
|
|
27
27
|
},
|
|
28
28
|
"publishConfig": {
|
|
29
|
-
"access": "public",
|
|
30
29
|
"provenance": true
|
|
31
30
|
},
|
|
32
|
-
"scripts": {
|
|
33
|
-
"build": "tsc",
|
|
34
|
-
"test": "vitest run",
|
|
35
|
-
"test:watch": "vitest"
|
|
36
|
-
},
|
|
37
31
|
"dependencies": {
|
|
38
|
-
"
|
|
39
|
-
"
|
|
32
|
+
"better-sqlite3": "^11.0.0",
|
|
33
|
+
"@taskcast/core": "0.2.0"
|
|
40
34
|
},
|
|
41
35
|
"devDependencies": {
|
|
42
36
|
"@types/better-sqlite3": "^7.6.0",
|
|
43
37
|
"typescript": "^5.7.0",
|
|
44
38
|
"vitest": "^2.1.0",
|
|
45
39
|
"@vitest/coverage-v8": "^2.1.0"
|
|
40
|
+
},
|
|
41
|
+
"scripts": {
|
|
42
|
+
"build": "tsc",
|
|
43
|
+
"test": "vitest run",
|
|
44
|
+
"test:watch": "vitest"
|
|
46
45
|
}
|
|
47
|
-
}
|
|
46
|
+
}
|