@modern-admin/system-drizzle 0.7.0 → 0.9.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/dist/schema/pg.d.ts +34 -0
- package/dist/schema/pg.d.ts.map +1 -1
- package/dist/schema/pg.js +3 -1
- package/dist/schema/pg.js.map +1 -1
- package/dist/stores/ai-task-store.d.ts +3 -0
- package/dist/stores/ai-task-store.d.ts.map +1 -1
- package/dist/stores/ai-task-store.js +52 -8
- package/dist/stores/ai-task-store.js.map +1 -1
- package/dist/stores/history-store.d.ts +2 -1
- package/dist/stores/history-store.d.ts.map +1 -1
- package/dist/stores/history-store.js +43 -1
- package/dist/stores/history-store.js.map +1 -1
- package/dist/stores/log-store.d.ts +2 -1
- package/dist/stores/log-store.d.ts.map +1 -1
- package/dist/stores/log-store.js +33 -1
- package/dist/stores/log-store.js.map +1 -1
- package/package.json +10 -2
- package/src/schema/pg.ts +3 -1
- package/src/stores/ai-task-store.ts +50 -7
- package/src/stores/history-store.ts +55 -1
- package/src/stores/log-store.ts +38 -1
package/dist/schema/pg.d.ts
CHANGED
|
@@ -2107,6 +2107,23 @@ export declare const maAiTask: import("drizzle-orm/pg-core").PgTableWithColumns<
|
|
|
2107
2107
|
identity: undefined;
|
|
2108
2108
|
generated: undefined;
|
|
2109
2109
|
}, {}, {}>;
|
|
2110
|
+
idempotencyKey: import("drizzle-orm/pg-core").PgColumn<{
|
|
2111
|
+
name: "idempotency_key";
|
|
2112
|
+
tableName: "ma_ai_task";
|
|
2113
|
+
dataType: "string";
|
|
2114
|
+
columnType: "PgText";
|
|
2115
|
+
data: string;
|
|
2116
|
+
driverParam: string;
|
|
2117
|
+
notNull: false;
|
|
2118
|
+
hasDefault: false;
|
|
2119
|
+
isPrimaryKey: false;
|
|
2120
|
+
isAutoincrement: false;
|
|
2121
|
+
hasRuntimeDefault: false;
|
|
2122
|
+
enumValues: [string, ...string[]];
|
|
2123
|
+
baseColumn: never;
|
|
2124
|
+
identity: undefined;
|
|
2125
|
+
generated: undefined;
|
|
2126
|
+
}, {}, {}>;
|
|
2110
2127
|
kind: import("drizzle-orm/pg-core").PgColumn<{
|
|
2111
2128
|
name: "kind";
|
|
2112
2129
|
tableName: "ma_ai_task";
|
|
@@ -4586,6 +4603,23 @@ export declare const systemTables: {
|
|
|
4586
4603
|
identity: undefined;
|
|
4587
4604
|
generated: undefined;
|
|
4588
4605
|
}, {}, {}>;
|
|
4606
|
+
idempotencyKey: import("drizzle-orm/pg-core").PgColumn<{
|
|
4607
|
+
name: "idempotency_key";
|
|
4608
|
+
tableName: "ma_ai_task";
|
|
4609
|
+
dataType: "string";
|
|
4610
|
+
columnType: "PgText";
|
|
4611
|
+
data: string;
|
|
4612
|
+
driverParam: string;
|
|
4613
|
+
notNull: false;
|
|
4614
|
+
hasDefault: false;
|
|
4615
|
+
isPrimaryKey: false;
|
|
4616
|
+
isAutoincrement: false;
|
|
4617
|
+
hasRuntimeDefault: false;
|
|
4618
|
+
enumValues: [string, ...string[]];
|
|
4619
|
+
baseColumn: never;
|
|
4620
|
+
identity: undefined;
|
|
4621
|
+
generated: undefined;
|
|
4622
|
+
}, {}, {}>;
|
|
4589
4623
|
kind: import("drizzle-orm/pg-core").PgColumn<{
|
|
4590
4624
|
name: "kind";
|
|
4591
4625
|
tableName: "ma_ai_task";
|
package/dist/schema/pg.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pg.d.ts","sourceRoot":"","sources":["../../src/schema/pg.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"pg.d.ts","sourceRoot":"","sources":["../../src/schema/pg.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiBf,CAAA;AAEV,MAAM,MAAM,YAAY,GAAG,OAAO,YAAY,CAAA"}
|
package/dist/schema/pg.js
CHANGED
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
* project, rename, and pass the renamed objects into `setupDrizzleSystem`.
|
|
29
29
|
*/
|
|
30
30
|
import { sql } from 'drizzle-orm';
|
|
31
|
-
import { bigint, boolean, index, integer, jsonb, pgTable, text, timestamp, unique, uuid } from 'drizzle-orm/pg-core';
|
|
31
|
+
import { bigint, boolean, index, integer, jsonb, pgTable, text, timestamp, unique, uniqueIndex, uuid } from 'drizzle-orm/pg-core';
|
|
32
32
|
// ─── Better Auth ──────────────────────────────────────────────────────────
|
|
33
33
|
/**
|
|
34
34
|
* Panel admin (Better Auth `user` table, remapped to `ma_user`).
|
|
@@ -241,6 +241,7 @@ export const maHistory = pgTable('ma_history', {
|
|
|
241
241
|
}));
|
|
242
242
|
export const maAiTask = pgTable('ma_ai_task', {
|
|
243
243
|
id: uuid('id').primaryKey().defaultRandom(),
|
|
244
|
+
idempotencyKey: text('idempotency_key'),
|
|
244
245
|
kind: text('kind').notNull(),
|
|
245
246
|
resourceId: text('resource_id'),
|
|
246
247
|
recordId: text('record_id'),
|
|
@@ -255,6 +256,7 @@ export const maAiTask = pgTable('ma_ai_task', {
|
|
|
255
256
|
startedAt: timestamp('started_at', { withTimezone: true }),
|
|
256
257
|
finishedAt: timestamp('finished_at', { withTimezone: true }),
|
|
257
258
|
}, (t) => ({
|
|
259
|
+
idempotencyKeyIdx: uniqueIndex('ma_ai_task_idempotency_key_uq').on(t.idempotencyKey),
|
|
258
260
|
kindStatusIdx: index('ma_ai_task_kind_status_idx').on(t.kind, t.status),
|
|
259
261
|
userIdx: index('ma_ai_task_user_idx').on(t.userId),
|
|
260
262
|
recordIdx: index('ma_ai_task_record_idx').on(t.resourceId, t.recordId),
|
package/dist/schema/pg.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pg.js","sourceRoot":"","sources":["../../src/schema/pg.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pg.js","sourceRoot":"","sources":["../../src/schema/pg.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,12 +7,15 @@ export declare class DrizzleAiTaskStore implements IAiTaskStore {
|
|
|
7
7
|
constructor(db: DrizzleLike, taskTable: SystemTables['maAiTask'], eventTable: SystemTables['maAiTaskEvent']);
|
|
8
8
|
enqueue(input: AiTaskInput): Promise<AiTask>;
|
|
9
9
|
get(id: string): Promise<AiTask | null>;
|
|
10
|
+
claim(id: string): Promise<AiTask | null>;
|
|
11
|
+
getByIdempotencyKey(idempotencyKey: string): Promise<AiTask | null>;
|
|
10
12
|
list(filter?: Parameters<IAiTaskStore['list']>[0]): Promise<AiTask[]>;
|
|
11
13
|
updateStatus(id: string, patch: {
|
|
12
14
|
status: AiTaskStatus;
|
|
13
15
|
progress?: number | null;
|
|
14
16
|
output?: Record<string, unknown>;
|
|
15
17
|
error?: string;
|
|
18
|
+
expectedStatus?: AiTaskStatus[];
|
|
16
19
|
}): Promise<AiTask>;
|
|
17
20
|
appendEvent(taskId: string, type: string, data: Record<string, unknown>): Promise<AiTaskEvent>;
|
|
18
21
|
events(taskId: string, sinceId?: string): Promise<AiTaskEvent[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-task-store.d.ts","sourceRoot":"","sources":["../../src/stores/ai-task-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,MAAM,EACX,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,YAAY,EAEjB,KAAK,YAAY,EAElB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAI5D,qBAAa,kBAAmB,YAAW,YAAY;IAEnD,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAH7B,YACmB,EAAE,EAAE,WAAW,EACf,SAAS,EAAE,YAAY,CAAC,UAAU,CAAC,EACnC,UAAU,EAAE,YAAY,CAAC,eAAe,CAAC,EACxD;IAEE,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"ai-task-store.d.ts","sourceRoot":"","sources":["../../src/stores/ai-task-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,MAAM,EACX,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,YAAY,EAEjB,KAAK,YAAY,EAElB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAI5D,qBAAa,kBAAmB,YAAW,YAAY;IAEnD,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAH7B,YACmB,EAAE,EAAE,WAAW,EACf,SAAS,EAAE,YAAY,CAAC,UAAU,CAAC,EACnC,UAAU,EAAE,YAAY,CAAC,eAAe,CAAC,EACxD;IAEE,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAsBjD;IAEK,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAO5C;IAEK,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAO9C;IAEK,mBAAmB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAOxE;IAEK,IAAI,CAAC,MAAM,GAAE,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAoB9E;IAEK,YAAY,CAChB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE;QACL,MAAM,EAAE,YAAY,CAAA;QACpB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;QACxB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAChC,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,cAAc,CAAC,EAAE,YAAY,EAAE,CAAA;KAChC,GACA,OAAO,CAAC,MAAM,CAAC,CAsCjB;IAEK,WAAW,CACf,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,WAAW,CAAC,CAMtB;IAEK,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CASrE;CACF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { rowToEvent, rowToTask, uuidv7, } from '@modern-admin/core';
|
|
2
|
-
import { and, asc, desc, eq, inArray } from 'drizzle-orm';
|
|
2
|
+
import { and, asc, desc, eq, gte, inArray } from 'drizzle-orm';
|
|
3
3
|
const TERMINAL = ['succeeded', 'failed', 'cancelled'];
|
|
4
4
|
export class DrizzleAiTaskStore {
|
|
5
5
|
constructor(db, taskTable, eventTable) {
|
|
@@ -8,10 +8,11 @@ export class DrizzleAiTaskStore {
|
|
|
8
8
|
this.eventTable = eventTable;
|
|
9
9
|
}
|
|
10
10
|
async enqueue(input) {
|
|
11
|
-
const
|
|
11
|
+
const insert = this.db
|
|
12
12
|
.insert(this.taskTable)
|
|
13
13
|
.values({
|
|
14
14
|
id: uuidv7(),
|
|
15
|
+
idempotencyKey: input.idempotencyKey ?? null,
|
|
15
16
|
kind: input.kind,
|
|
16
17
|
resourceId: input.resourceId ?? null,
|
|
17
18
|
recordId: input.recordId ?? null,
|
|
@@ -19,9 +20,17 @@ export class DrizzleAiTaskStore {
|
|
|
19
20
|
status: 'pending',
|
|
20
21
|
input: input.input ?? {},
|
|
21
22
|
progress: null,
|
|
22
|
-
})
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
});
|
|
24
|
+
const query = input.idempotencyKey
|
|
25
|
+
? insert.onConflictDoNothing({ target: this.taskTable.idempotencyKey })
|
|
26
|
+
: insert;
|
|
27
|
+
const rows = (await query.returning());
|
|
28
|
+
if (rows[0])
|
|
29
|
+
return rowToTask(rows[0]);
|
|
30
|
+
const existing = await this.getByIdempotencyKey(input.idempotencyKey);
|
|
31
|
+
if (!existing)
|
|
32
|
+
throw new Error('Failed to enqueue idempotent AI task');
|
|
33
|
+
return existing;
|
|
25
34
|
}
|
|
26
35
|
async get(id) {
|
|
27
36
|
const rows = (await this.db
|
|
@@ -31,10 +40,28 @@ export class DrizzleAiTaskStore {
|
|
|
31
40
|
.limit(1));
|
|
32
41
|
return rows[0] ? rowToTask(rows[0]) : null;
|
|
33
42
|
}
|
|
43
|
+
async claim(id) {
|
|
44
|
+
const rows = (await this.db
|
|
45
|
+
.update(this.taskTable)
|
|
46
|
+
.set({ status: 'running', progress: 5, startedAt: new Date(), updatedAt: new Date() })
|
|
47
|
+
.where(and(eq(this.taskTable.id, id), eq(this.taskTable.status, 'pending')))
|
|
48
|
+
.returning());
|
|
49
|
+
return rows[0] ? rowToTask(rows[0]) : null;
|
|
50
|
+
}
|
|
51
|
+
async getByIdempotencyKey(idempotencyKey) {
|
|
52
|
+
const rows = (await this.db
|
|
53
|
+
.select()
|
|
54
|
+
.from(this.taskTable)
|
|
55
|
+
.where(eq(this.taskTable.idempotencyKey, idempotencyKey))
|
|
56
|
+
.limit(1));
|
|
57
|
+
return rows[0] ? rowToTask(rows[0]) : null;
|
|
58
|
+
}
|
|
34
59
|
async list(filter = {}) {
|
|
35
60
|
const conds = [];
|
|
36
61
|
if (filter.kind)
|
|
37
62
|
conds.push(eq(this.taskTable.kind, filter.kind));
|
|
63
|
+
if (filter.idempotencyKey)
|
|
64
|
+
conds.push(eq(this.taskTable.idempotencyKey, filter.idempotencyKey));
|
|
38
65
|
if (filter.status) {
|
|
39
66
|
const list = Array.isArray(filter.status) ? filter.status : [filter.status];
|
|
40
67
|
conds.push(inArray(this.taskTable.status, list));
|
|
@@ -43,6 +70,9 @@ export class DrizzleAiTaskStore {
|
|
|
43
70
|
conds.push(eq(this.taskTable.userId, filter.userId));
|
|
44
71
|
if (filter.resourceId)
|
|
45
72
|
conds.push(eq(this.taskTable.resourceId, filter.resourceId));
|
|
73
|
+
if (filter.createdAfter) {
|
|
74
|
+
conds.push(gte(this.taskTable.createdAt, new Date(filter.createdAfter)));
|
|
75
|
+
}
|
|
46
76
|
let q = this.db.select().from(this.taskTable);
|
|
47
77
|
if (conds.length)
|
|
48
78
|
q = q.where(conds.length === 1 ? conds[0] : and(...conds));
|
|
@@ -72,14 +102,28 @@ export class DrizzleAiTaskStore {
|
|
|
72
102
|
if (TERMINAL.includes(patch.status)) {
|
|
73
103
|
data['finishedAt'] = new Date();
|
|
74
104
|
}
|
|
105
|
+
// Atomic guarded write: the status predicate makes the update a no-op unless
|
|
106
|
+
// the row is still in an expected status, so a concurrent cancel/finalize is
|
|
107
|
+
// never overwritten. Return the current row either way.
|
|
108
|
+
const where = patch.expectedStatus
|
|
109
|
+
? and(eq(this.taskTable.id, id), inArray(this.taskTable.status, patch.expectedStatus))
|
|
110
|
+
: eq(this.taskTable.id, id);
|
|
75
111
|
const rows = (await this.db
|
|
76
112
|
.update(this.taskTable)
|
|
77
113
|
.set(data)
|
|
78
|
-
.where(
|
|
114
|
+
.where(where)
|
|
79
115
|
.returning());
|
|
80
|
-
if (
|
|
116
|
+
if (rows[0])
|
|
117
|
+
return rowToTask(rows[0]);
|
|
118
|
+
// No row matched the guard (or the id is unknown): re-read to distinguish.
|
|
119
|
+
const current = (await this.db
|
|
120
|
+
.select()
|
|
121
|
+
.from(this.taskTable)
|
|
122
|
+
.where(eq(this.taskTable.id, id))
|
|
123
|
+
.limit(1));
|
|
124
|
+
if (!current[0])
|
|
81
125
|
throw new Error(`AI task not found: ${id}`);
|
|
82
|
-
return rowToTask(
|
|
126
|
+
return rowToTask(current[0]);
|
|
83
127
|
}
|
|
84
128
|
async appendEvent(taskId, type, data) {
|
|
85
129
|
const rows = (await this.db
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-task-store.js","sourceRoot":"","sources":["../../src/stores/ai-task-store.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,SAAS,EACT,MAAM,GAQP,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAY,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"ai-task-store.js","sourceRoot":"","sources":["../../src/stores/ai-task-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type HistoryEntry, type HistoryOp, type IHistoryStore } from '@modern-admin/core';
|
|
1
|
+
import { type HistoryEntry, type HistoryOp, type HistoryRetention, type IHistoryStore } from '@modern-admin/core';
|
|
2
2
|
import type { DrizzleLike, SystemTables } from '../types.js';
|
|
3
3
|
export declare class DrizzleHistoryStore implements IHistoryStore {
|
|
4
4
|
private readonly db;
|
|
@@ -18,5 +18,6 @@ export declare class DrizzleHistoryStore implements IHistoryStore {
|
|
|
18
18
|
}): Promise<HistoryEntry[]>;
|
|
19
19
|
get(resourceId: string, recordId: string, revisionId: string): Promise<HistoryEntry | null>;
|
|
20
20
|
latest(resourceId: string, recordId: string): Promise<HistoryEntry | null>;
|
|
21
|
+
prune(retention: HistoryRetention): Promise<number>;
|
|
21
22
|
}
|
|
22
23
|
//# sourceMappingURL=history-store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history-store.d.ts","sourceRoot":"","sources":["../../src/stores/history-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,SAAS,
|
|
1
|
+
{"version":3,"file":"history-store.d.ts","sourceRoot":"","sources":["../../src/stores/history-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,gBAAgB,EAErB,KAAK,aAAa,EACnB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAI5D,qBAAa,mBAAoB,YAAW,aAAa;IAErD,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAFxB,YACmB,EAAE,EAAE,WAAW,EACf,KAAK,EAAE,YAAY,CAAC,WAAW,CAAC,EAC/C;IAEE,MAAM,CAAC,KAAK,EAAE;QAClB,UAAU,EAAE,MAAM,CAAA;QAClB,QAAQ,EAAE,MAAM,CAAA;QAChB,EAAE,EAAE,SAAS,CAAA;QACb,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QACjC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KACzC,GAAG,OAAO,CAAC,YAAY,CAAC,CAcxB;IAEK,IAAI,CACR,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO,GAChD,OAAO,CAAC,YAAY,EAAE,CAAC,CAczB;IAEK,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAahG;IAEK,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAG/E;IAEK,KAAK,CAAC,SAAS,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAiDxD;CACF"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { rowToHistoryEntry as rowToEntry, uuidv7, } from '@modern-admin/core';
|
|
2
|
-
import { and, desc, eq } from 'drizzle-orm';
|
|
2
|
+
import { and, desc, eq, inArray, lt } from 'drizzle-orm';
|
|
3
|
+
const PRUNE_BATCH_SIZE = 1_000;
|
|
3
4
|
export class DrizzleHistoryStore {
|
|
4
5
|
constructor(db, table) {
|
|
5
6
|
this.db = db;
|
|
@@ -46,5 +47,46 @@ export class DrizzleHistoryStore {
|
|
|
46
47
|
const rows = (await this.list(resourceId, recordId, { limit: 1 }));
|
|
47
48
|
return rows[0] ?? null;
|
|
48
49
|
}
|
|
50
|
+
async prune(retention) {
|
|
51
|
+
let removed = 0;
|
|
52
|
+
if (retention.keepDays !== undefined) {
|
|
53
|
+
const cutoff = new Date(Date.now() - retention.keepDays * 24 * 60 * 60 * 1000);
|
|
54
|
+
const rows = (await this.db
|
|
55
|
+
.delete(this.table)
|
|
56
|
+
.where(lt(this.table.createdAt, cutoff))
|
|
57
|
+
.returning({ id: this.table.id }));
|
|
58
|
+
removed += rows.length;
|
|
59
|
+
}
|
|
60
|
+
if (retention.keepLast !== undefined) {
|
|
61
|
+
const keep = Math.max(0, Math.trunc(retention.keepLast));
|
|
62
|
+
const groups = (await this.db
|
|
63
|
+
.select({
|
|
64
|
+
resourceId: this.table.resourceId,
|
|
65
|
+
recordId: this.table.recordId,
|
|
66
|
+
})
|
|
67
|
+
.from(this.table)
|
|
68
|
+
.groupBy(this.table.resourceId, this.table.recordId));
|
|
69
|
+
for (const group of groups) {
|
|
70
|
+
while (true) {
|
|
71
|
+
let query = this.db
|
|
72
|
+
.select({ id: this.table.id })
|
|
73
|
+
.from(this.table)
|
|
74
|
+
.where(and(eq(this.table.resourceId, group.resourceId), eq(this.table.recordId, group.recordId)))
|
|
75
|
+
.orderBy(desc(this.table.createdAt), desc(this.table.id));
|
|
76
|
+
if (keep > 0)
|
|
77
|
+
query = query.offset(keep);
|
|
78
|
+
const obsolete = (await query.limit(PRUNE_BATCH_SIZE));
|
|
79
|
+
if (obsolete.length === 0)
|
|
80
|
+
break;
|
|
81
|
+
const rows = (await this.db
|
|
82
|
+
.delete(this.table)
|
|
83
|
+
.where(inArray(this.table.id, obsolete.map((row) => row.id)))
|
|
84
|
+
.returning({ id: this.table.id }));
|
|
85
|
+
removed += rows.length;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return removed;
|
|
90
|
+
}
|
|
49
91
|
}
|
|
50
92
|
//# sourceMappingURL=history-store.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history-store.js","sourceRoot":"","sources":["../../src/stores/history-store.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,IAAI,UAAU,EAC/B,MAAM,
|
|
1
|
+
{"version":3,"file":"history-store.js","sourceRoot":"","sources":["../../src/stores/history-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type ActionLogEntry, type IQueryableLogStore } from '@modern-admin/core';
|
|
1
|
+
import { type ActionLogRetention, type ActionLogEntry, type IQueryableLogStore } from '@modern-admin/core';
|
|
2
2
|
import type { DrizzleLike, SystemTables } from '../types.js';
|
|
3
3
|
export declare class DrizzleLogStore implements IQueryableLogStore {
|
|
4
4
|
private readonly db;
|
|
@@ -6,5 +6,6 @@ export declare class DrizzleLogStore implements IQueryableLogStore {
|
|
|
6
6
|
constructor(db: DrizzleLike, table: SystemTables['maLog']);
|
|
7
7
|
record(entry: ActionLogEntry): Promise<void>;
|
|
8
8
|
list(filter?: Parameters<IQueryableLogStore['list']>[0]): Promise<ActionLogEntry[]>;
|
|
9
|
+
prune(retention: ActionLogRetention): Promise<number>;
|
|
9
10
|
}
|
|
10
11
|
//# sourceMappingURL=log-store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log-store.d.ts","sourceRoot":"","sources":["../../src/stores/log-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,kBAAkB,EAExB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"log-store.d.ts","sourceRoot":"","sources":["../../src/stores/log-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EAExB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAI5D,qBAAa,eAAgB,YAAW,kBAAkB;IAEtD,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAFxB,YACmB,EAAE,EAAE,WAAW,EACf,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,EAC3C;IAEE,MAAM,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAYjD;IAEK,IAAI,CAAC,MAAM,GAAE,UAAU,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAiB5F;IAEK,KAAK,CAAC,SAAS,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAgC1D;CACF"}
|
package/dist/stores/log-store.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { rowToLogEntry, uuidv7, } from '@modern-admin/core';
|
|
2
|
-
import { and, desc, eq, gte, inArray, lte } from 'drizzle-orm';
|
|
2
|
+
import { and, desc, eq, gte, inArray, lt, lte } from 'drizzle-orm';
|
|
3
|
+
const PRUNE_BATCH_SIZE = 1_000;
|
|
3
4
|
export class DrizzleLogStore {
|
|
4
5
|
constructor(db, table) {
|
|
5
6
|
this.db = db;
|
|
@@ -43,5 +44,36 @@ export class DrizzleLogStore {
|
|
|
43
44
|
const rows = (await q);
|
|
44
45
|
return rows.map(rowToLogEntry);
|
|
45
46
|
}
|
|
47
|
+
async prune(retention) {
|
|
48
|
+
let removed = 0;
|
|
49
|
+
if (retention.keepDays !== undefined) {
|
|
50
|
+
const cutoff = new Date(Date.now() - retention.keepDays * 24 * 60 * 60 * 1000);
|
|
51
|
+
const rows = (await this.db
|
|
52
|
+
.delete(this.table)
|
|
53
|
+
.where(lt(this.table.createdAt, cutoff))
|
|
54
|
+
.returning({ id: this.table.id }));
|
|
55
|
+
removed += rows.length;
|
|
56
|
+
}
|
|
57
|
+
if (retention.keepLast !== undefined) {
|
|
58
|
+
const keep = Math.max(0, Math.trunc(retention.keepLast));
|
|
59
|
+
while (true) {
|
|
60
|
+
let query = this.db
|
|
61
|
+
.select({ id: this.table.id })
|
|
62
|
+
.from(this.table)
|
|
63
|
+
.orderBy(desc(this.table.createdAt), desc(this.table.id));
|
|
64
|
+
if (keep > 0)
|
|
65
|
+
query = query.offset(keep);
|
|
66
|
+
const obsolete = (await query.limit(PRUNE_BATCH_SIZE));
|
|
67
|
+
if (obsolete.length === 0)
|
|
68
|
+
break;
|
|
69
|
+
const rows = (await this.db
|
|
70
|
+
.delete(this.table)
|
|
71
|
+
.where(inArray(this.table.id, obsolete.map((row) => row.id)))
|
|
72
|
+
.returning({ id: this.table.id }));
|
|
73
|
+
removed += rows.length;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return removed;
|
|
77
|
+
}
|
|
46
78
|
}
|
|
47
79
|
//# sourceMappingURL=log-store.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log-store.js","sourceRoot":"","sources":["../../src/stores/log-store.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,MAAM,
|
|
1
|
+
{"version":3,"file":"log-store.js","sourceRoot":"","sources":["../../src/stores/log-store.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@modern-admin/system-drizzle",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "Drizzle-backed implementation of Modern Admin system stores.",
|
|
5
5
|
"homepage": "https://github.com/modern-admin/modern-admin/tree/main/packages/system-drizzle#readme",
|
|
6
6
|
"keywords": [
|
|
@@ -25,6 +25,10 @@
|
|
|
25
25
|
".": {
|
|
26
26
|
"types": "./dist/index.d.ts",
|
|
27
27
|
"default": "./dist/index.js"
|
|
28
|
+
},
|
|
29
|
+
"./pg": {
|
|
30
|
+
"types": "./dist/schema/pg.d.ts",
|
|
31
|
+
"default": "./dist/schema/pg.js"
|
|
28
32
|
}
|
|
29
33
|
},
|
|
30
34
|
"files": [
|
|
@@ -41,11 +45,15 @@
|
|
|
41
45
|
".": {
|
|
42
46
|
"types": "./dist/index.d.ts",
|
|
43
47
|
"default": "./dist/index.js"
|
|
48
|
+
},
|
|
49
|
+
"./pg": {
|
|
50
|
+
"types": "./dist/schema/pg.d.ts",
|
|
51
|
+
"default": "./dist/schema/pg.js"
|
|
44
52
|
}
|
|
45
53
|
}
|
|
46
54
|
},
|
|
47
55
|
"dependencies": {
|
|
48
|
-
"@modern-admin/core": "^0.
|
|
56
|
+
"@modern-admin/core": "^0.9.0"
|
|
49
57
|
},
|
|
50
58
|
"devDependencies": {
|
|
51
59
|
"@modern-admin/tsconfig": "0.4.0",
|
package/src/schema/pg.ts
CHANGED
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
*/
|
|
30
30
|
|
|
31
31
|
import { sql } from 'drizzle-orm'
|
|
32
|
-
import { bigint, boolean, index, integer, jsonb, pgTable, text, timestamp, unique, uuid } from 'drizzle-orm/pg-core'
|
|
32
|
+
import { bigint, boolean, index, integer, jsonb, pgTable, text, timestamp, unique, uniqueIndex, uuid } from 'drizzle-orm/pg-core'
|
|
33
33
|
|
|
34
34
|
// ─── Better Auth ──────────────────────────────────────────────────────────
|
|
35
35
|
|
|
@@ -285,6 +285,7 @@ export const maAiTask = pgTable(
|
|
|
285
285
|
'ma_ai_task',
|
|
286
286
|
{
|
|
287
287
|
id: uuid('id').primaryKey().defaultRandom(),
|
|
288
|
+
idempotencyKey: text('idempotency_key'),
|
|
288
289
|
kind: text('kind').notNull(),
|
|
289
290
|
resourceId: text('resource_id'),
|
|
290
291
|
recordId: text('record_id'),
|
|
@@ -300,6 +301,7 @@ export const maAiTask = pgTable(
|
|
|
300
301
|
finishedAt: timestamp('finished_at', { withTimezone: true }),
|
|
301
302
|
},
|
|
302
303
|
(t) => ({
|
|
304
|
+
idempotencyKeyIdx: uniqueIndex('ma_ai_task_idempotency_key_uq').on(t.idempotencyKey),
|
|
303
305
|
kindStatusIdx: index('ma_ai_task_kind_status_idx').on(t.kind, t.status),
|
|
304
306
|
userIdx: index('ma_ai_task_user_idx').on(t.userId),
|
|
305
307
|
recordIdx: index('ma_ai_task_record_idx').on(t.resourceId, t.recordId),
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
type IAiTaskStore,
|
|
11
11
|
type TaskRow,
|
|
12
12
|
} from '@modern-admin/core'
|
|
13
|
-
import { and, asc, desc, eq, inArray, type SQL } from 'drizzle-orm'
|
|
13
|
+
import { and, asc, desc, eq, gte, inArray, type SQL } from 'drizzle-orm'
|
|
14
14
|
import type { DrizzleLike, SystemTables } from '../types.js'
|
|
15
15
|
|
|
16
16
|
const TERMINAL: AiTaskStatus[] = ['succeeded', 'failed', 'cancelled']
|
|
@@ -23,10 +23,11 @@ export class DrizzleAiTaskStore implements IAiTaskStore {
|
|
|
23
23
|
) {}
|
|
24
24
|
|
|
25
25
|
async enqueue(input: AiTaskInput): Promise<AiTask> {
|
|
26
|
-
const
|
|
26
|
+
const insert = this.db
|
|
27
27
|
.insert(this.taskTable)
|
|
28
28
|
.values({
|
|
29
29
|
id: uuidv7(),
|
|
30
|
+
idempotencyKey: input.idempotencyKey ?? null,
|
|
30
31
|
kind: input.kind,
|
|
31
32
|
resourceId: input.resourceId ?? null,
|
|
32
33
|
recordId: input.recordId ?? null,
|
|
@@ -35,8 +36,14 @@ export class DrizzleAiTaskStore implements IAiTaskStore {
|
|
|
35
36
|
input: input.input ?? {},
|
|
36
37
|
progress: null,
|
|
37
38
|
})
|
|
38
|
-
|
|
39
|
-
|
|
39
|
+
const query = input.idempotencyKey
|
|
40
|
+
? insert.onConflictDoNothing({ target: this.taskTable.idempotencyKey })
|
|
41
|
+
: insert
|
|
42
|
+
const rows = (await query.returning()) as TaskRow[]
|
|
43
|
+
if (rows[0]) return rowToTask(rows[0])
|
|
44
|
+
const existing = await this.getByIdempotencyKey(input.idempotencyKey!)
|
|
45
|
+
if (!existing) throw new Error('Failed to enqueue idempotent AI task')
|
|
46
|
+
return existing
|
|
40
47
|
}
|
|
41
48
|
|
|
42
49
|
async get(id: string): Promise<AiTask | null> {
|
|
@@ -48,15 +55,37 @@ export class DrizzleAiTaskStore implements IAiTaskStore {
|
|
|
48
55
|
return rows[0] ? rowToTask(rows[0]) : null
|
|
49
56
|
}
|
|
50
57
|
|
|
58
|
+
async claim(id: string): Promise<AiTask | null> {
|
|
59
|
+
const rows = (await this.db
|
|
60
|
+
.update(this.taskTable)
|
|
61
|
+
.set({ status: 'running', progress: 5, startedAt: new Date(), updatedAt: new Date() })
|
|
62
|
+
.where(and(eq(this.taskTable.id, id), eq(this.taskTable.status, 'pending')))
|
|
63
|
+
.returning()) as TaskRow[]
|
|
64
|
+
return rows[0] ? rowToTask(rows[0]) : null
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
async getByIdempotencyKey(idempotencyKey: string): Promise<AiTask | null> {
|
|
68
|
+
const rows = (await this.db
|
|
69
|
+
.select()
|
|
70
|
+
.from(this.taskTable)
|
|
71
|
+
.where(eq(this.taskTable.idempotencyKey, idempotencyKey))
|
|
72
|
+
.limit(1)) as TaskRow[]
|
|
73
|
+
return rows[0] ? rowToTask(rows[0]) : null
|
|
74
|
+
}
|
|
75
|
+
|
|
51
76
|
async list(filter: Parameters<IAiTaskStore['list']>[0] = {}): Promise<AiTask[]> {
|
|
52
77
|
const conds: SQL[] = []
|
|
53
78
|
if (filter.kind) conds.push(eq(this.taskTable.kind, filter.kind))
|
|
79
|
+
if (filter.idempotencyKey) conds.push(eq(this.taskTable.idempotencyKey, filter.idempotencyKey))
|
|
54
80
|
if (filter.status) {
|
|
55
81
|
const list = Array.isArray(filter.status) ? filter.status : [filter.status]
|
|
56
82
|
conds.push(inArray(this.taskTable.status, list))
|
|
57
83
|
}
|
|
58
84
|
if (filter.userId) conds.push(eq(this.taskTable.userId, filter.userId))
|
|
59
85
|
if (filter.resourceId) conds.push(eq(this.taskTable.resourceId, filter.resourceId))
|
|
86
|
+
if (filter.createdAfter) {
|
|
87
|
+
conds.push(gte(this.taskTable.createdAt, new Date(filter.createdAfter)))
|
|
88
|
+
}
|
|
60
89
|
|
|
61
90
|
let q = this.db.select().from(this.taskTable)
|
|
62
91
|
if (conds.length) q = q.where(conds.length === 1 ? conds[0] : and(...conds))
|
|
@@ -73,6 +102,7 @@ export class DrizzleAiTaskStore implements IAiTaskStore {
|
|
|
73
102
|
progress?: number | null
|
|
74
103
|
output?: Record<string, unknown>
|
|
75
104
|
error?: string
|
|
105
|
+
expectedStatus?: AiTaskStatus[]
|
|
76
106
|
},
|
|
77
107
|
): Promise<AiTask> {
|
|
78
108
|
const data: Record<string, unknown> = { status: patch.status, updatedAt: new Date() }
|
|
@@ -92,13 +122,26 @@ export class DrizzleAiTaskStore implements IAiTaskStore {
|
|
|
92
122
|
data['finishedAt'] = new Date()
|
|
93
123
|
}
|
|
94
124
|
|
|
125
|
+
// Atomic guarded write: the status predicate makes the update a no-op unless
|
|
126
|
+
// the row is still in an expected status, so a concurrent cancel/finalize is
|
|
127
|
+
// never overwritten. Return the current row either way.
|
|
128
|
+
const where = patch.expectedStatus
|
|
129
|
+
? and(eq(this.taskTable.id, id), inArray(this.taskTable.status, patch.expectedStatus))
|
|
130
|
+
: eq(this.taskTable.id, id)
|
|
95
131
|
const rows = (await this.db
|
|
96
132
|
.update(this.taskTable)
|
|
97
133
|
.set(data)
|
|
98
|
-
.where(
|
|
134
|
+
.where(where)
|
|
99
135
|
.returning()) as TaskRow[]
|
|
100
|
-
if (
|
|
101
|
-
|
|
136
|
+
if (rows[0]) return rowToTask(rows[0])
|
|
137
|
+
// No row matched the guard (or the id is unknown): re-read to distinguish.
|
|
138
|
+
const current = (await this.db
|
|
139
|
+
.select()
|
|
140
|
+
.from(this.taskTable)
|
|
141
|
+
.where(eq(this.taskTable.id, id))
|
|
142
|
+
.limit(1)) as TaskRow[]
|
|
143
|
+
if (!current[0]) throw new Error(`AI task not found: ${id}`)
|
|
144
|
+
return rowToTask(current[0])
|
|
102
145
|
}
|
|
103
146
|
|
|
104
147
|
async appendEvent(
|
|
@@ -3,12 +3,15 @@ import {
|
|
|
3
3
|
uuidv7,
|
|
4
4
|
type HistoryEntry,
|
|
5
5
|
type HistoryOp,
|
|
6
|
+
type HistoryRetention,
|
|
6
7
|
type HistoryRow,
|
|
7
8
|
type IHistoryStore,
|
|
8
9
|
} from '@modern-admin/core'
|
|
9
|
-
import { and, desc, eq } from 'drizzle-orm'
|
|
10
|
+
import { and, desc, eq, inArray, lt } from 'drizzle-orm'
|
|
10
11
|
import type { DrizzleLike, SystemTables } from '../types.js'
|
|
11
12
|
|
|
13
|
+
const PRUNE_BATCH_SIZE = 1_000
|
|
14
|
+
|
|
12
15
|
export class DrizzleHistoryStore implements IHistoryStore {
|
|
13
16
|
constructor(
|
|
14
17
|
private readonly db: DrizzleLike,
|
|
@@ -77,4 +80,55 @@ export class DrizzleHistoryStore implements IHistoryStore {
|
|
|
77
80
|
const rows = (await this.list(resourceId, recordId, { limit: 1 })) as HistoryEntry[]
|
|
78
81
|
return rows[0] ?? null
|
|
79
82
|
}
|
|
83
|
+
|
|
84
|
+
async prune(retention: HistoryRetention): Promise<number> {
|
|
85
|
+
let removed = 0
|
|
86
|
+
|
|
87
|
+
if (retention.keepDays !== undefined) {
|
|
88
|
+
const cutoff = new Date(Date.now() - retention.keepDays * 24 * 60 * 60 * 1000)
|
|
89
|
+
const rows = (await this.db
|
|
90
|
+
.delete(this.table)
|
|
91
|
+
.where(lt(this.table.createdAt, cutoff))
|
|
92
|
+
.returning({ id: this.table.id })) as Array<{ id: string }>
|
|
93
|
+
removed += rows.length
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
if (retention.keepLast !== undefined) {
|
|
97
|
+
const keep = Math.max(0, Math.trunc(retention.keepLast))
|
|
98
|
+
const groups = (await this.db
|
|
99
|
+
.select({
|
|
100
|
+
resourceId: this.table.resourceId,
|
|
101
|
+
recordId: this.table.recordId,
|
|
102
|
+
})
|
|
103
|
+
.from(this.table)
|
|
104
|
+
.groupBy(this.table.resourceId, this.table.recordId)) as Array<{
|
|
105
|
+
resourceId: string
|
|
106
|
+
recordId: string
|
|
107
|
+
}>
|
|
108
|
+
|
|
109
|
+
for (const group of groups) {
|
|
110
|
+
while (true) {
|
|
111
|
+
let query = this.db
|
|
112
|
+
.select({ id: this.table.id })
|
|
113
|
+
.from(this.table)
|
|
114
|
+
.where(and(
|
|
115
|
+
eq(this.table.resourceId, group.resourceId),
|
|
116
|
+
eq(this.table.recordId, group.recordId),
|
|
117
|
+
))
|
|
118
|
+
.orderBy(desc(this.table.createdAt), desc(this.table.id))
|
|
119
|
+
if (keep > 0) query = query.offset(keep)
|
|
120
|
+
const obsolete = (await query.limit(PRUNE_BATCH_SIZE)) as Array<{ id: string }>
|
|
121
|
+
if (obsolete.length === 0) break
|
|
122
|
+
|
|
123
|
+
const rows = (await this.db
|
|
124
|
+
.delete(this.table)
|
|
125
|
+
.where(inArray(this.table.id, obsolete.map((row) => row.id)))
|
|
126
|
+
.returning({ id: this.table.id })) as Array<{ id: string }>
|
|
127
|
+
removed += rows.length
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
return removed
|
|
133
|
+
}
|
|
80
134
|
}
|
package/src/stores/log-store.ts
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
rowToLogEntry,
|
|
3
3
|
uuidv7,
|
|
4
|
+
type ActionLogRetention,
|
|
4
5
|
type ActionLogEntry,
|
|
5
6
|
type IQueryableLogStore,
|
|
6
7
|
type LogRow,
|
|
7
8
|
} from '@modern-admin/core'
|
|
8
|
-
import { and, desc, eq, gte, inArray, lte, type SQL } from 'drizzle-orm'
|
|
9
|
+
import { and, desc, eq, gte, inArray, lt, lte, type SQL } from 'drizzle-orm'
|
|
9
10
|
import type { DrizzleLike, SystemTables } from '../types.js'
|
|
10
11
|
|
|
12
|
+
const PRUNE_BATCH_SIZE = 1_000
|
|
13
|
+
|
|
11
14
|
export class DrizzleLogStore implements IQueryableLogStore {
|
|
12
15
|
constructor(
|
|
13
16
|
private readonly db: DrizzleLike,
|
|
@@ -46,4 +49,38 @@ export class DrizzleLogStore implements IQueryableLogStore {
|
|
|
46
49
|
const rows = (await q) as LogRow[]
|
|
47
50
|
return rows.map(rowToLogEntry)
|
|
48
51
|
}
|
|
52
|
+
|
|
53
|
+
async prune(retention: ActionLogRetention): Promise<number> {
|
|
54
|
+
let removed = 0
|
|
55
|
+
|
|
56
|
+
if (retention.keepDays !== undefined) {
|
|
57
|
+
const cutoff = new Date(Date.now() - retention.keepDays * 24 * 60 * 60 * 1000)
|
|
58
|
+
const rows = (await this.db
|
|
59
|
+
.delete(this.table)
|
|
60
|
+
.where(lt(this.table.createdAt, cutoff))
|
|
61
|
+
.returning({ id: this.table.id })) as Array<{ id: string }>
|
|
62
|
+
removed += rows.length
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
if (retention.keepLast !== undefined) {
|
|
66
|
+
const keep = Math.max(0, Math.trunc(retention.keepLast))
|
|
67
|
+
while (true) {
|
|
68
|
+
let query = this.db
|
|
69
|
+
.select({ id: this.table.id })
|
|
70
|
+
.from(this.table)
|
|
71
|
+
.orderBy(desc(this.table.createdAt), desc(this.table.id))
|
|
72
|
+
if (keep > 0) query = query.offset(keep)
|
|
73
|
+
const obsolete = (await query.limit(PRUNE_BATCH_SIZE)) as Array<{ id: string }>
|
|
74
|
+
if (obsolete.length === 0) break
|
|
75
|
+
|
|
76
|
+
const rows = (await this.db
|
|
77
|
+
.delete(this.table)
|
|
78
|
+
.where(inArray(this.table.id, obsolete.map((row) => row.id)))
|
|
79
|
+
.returning({ id: this.table.id })) as Array<{ id: string }>
|
|
80
|
+
removed += rows.length
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
return removed
|
|
85
|
+
}
|
|
49
86
|
}
|