@modern-admin/system-drizzle 0.2.1 → 0.3.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/stores/ai-task-store.d.ts.map +1 -1
- package/dist/stores/ai-task-store.js +1 -26
- package/dist/stores/ai-task-store.js.map +1 -1
- package/dist/stores/cache-store.d.ts +1 -1
- package/dist/stores/cache-store.d.ts.map +1 -1
- package/dist/stores/cache-store.js +23 -13
- package/dist/stores/cache-store.js.map +1 -1
- package/dist/stores/config-store.d.ts.map +1 -1
- package/dist/stores/config-store.js +1 -8
- package/dist/stores/config-store.js.map +1 -1
- package/dist/stores/history-store.d.ts.map +1 -1
- package/dist/stores/history-store.js +1 -13
- package/dist/stores/history-store.js.map +1 -1
- package/dist/stores/log-store.d.ts.map +1 -1
- package/dist/stores/log-store.js +2 -17
- package/dist/stores/log-store.js.map +1 -1
- package/dist/stores/webhook-store.d.ts.map +1 -1
- package/dist/stores/webhook-store.js +1 -28
- package/dist/stores/webhook-store.js.map +1 -1
- package/package.json +4 -4
- package/src/stores/ai-task-store.ts +4 -52
- package/src/stores/cache-store.ts +22 -24
- package/src/stores/config-store.ts +8 -17
- package/src/stores/history-store.ts +8 -26
- package/src/stores/log-store.ts +8 -30
- package/src/stores/webhook-store.ts +4 -59
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Modern Admin contributors
|
|
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.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-task-store.d.ts","sourceRoot":"","sources":["../../src/stores/ai-task-store.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
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;gBAFV,EAAE,EAAE,WAAW,EACf,SAAS,EAAE,YAAY,CAAC,UAAU,CAAC,EACnC,UAAU,EAAE,YAAY,CAAC,eAAe,CAAC;IAGtD,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAiB5C,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IASvC,IAAI,CAAC,MAAM,GAAE,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAkBzE,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;KACf,GACA,OAAO,CAAC,MAAM,CAAC;IA2BZ,WAAW,CACf,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,WAAW,CAAC;IAQjB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;CAUvE"}
|
|
@@ -1,30 +1,5 @@
|
|
|
1
|
-
import { uuidv7, } from '@modern-admin/core';
|
|
1
|
+
import { rowToEvent, rowToTask, uuidv7, } from '@modern-admin/core';
|
|
2
2
|
import { and, asc, desc, eq, inArray } from 'drizzle-orm';
|
|
3
|
-
const rowToTask = (row) => ({
|
|
4
|
-
id: row.id,
|
|
5
|
-
kind: row.kind,
|
|
6
|
-
...(row.resourceId !== null ? { resourceId: row.resourceId } : {}),
|
|
7
|
-
...(row.recordId !== null ? { recordId: row.recordId } : {}),
|
|
8
|
-
...(row.userId !== null ? { userId: row.userId } : {}),
|
|
9
|
-
status: row.status,
|
|
10
|
-
input: row.input ?? {},
|
|
11
|
-
...(row.output !== null && row.output !== undefined
|
|
12
|
-
? { output: row.output }
|
|
13
|
-
: {}),
|
|
14
|
-
...(row.error !== null ? { error: row.error } : {}),
|
|
15
|
-
progress: row.progress,
|
|
16
|
-
createdAt: row.createdAt.toISOString(),
|
|
17
|
-
updatedAt: row.updatedAt.toISOString(),
|
|
18
|
-
...(row.startedAt !== null ? { startedAt: row.startedAt.toISOString() } : {}),
|
|
19
|
-
...(row.finishedAt !== null ? { finishedAt: row.finishedAt.toISOString() } : {}),
|
|
20
|
-
});
|
|
21
|
-
const rowToEvent = (row) => ({
|
|
22
|
-
id: row.id,
|
|
23
|
-
taskId: row.taskId,
|
|
24
|
-
type: row.type,
|
|
25
|
-
data: row.data ?? {},
|
|
26
|
-
createdAt: row.createdAt.toISOString(),
|
|
27
|
-
});
|
|
28
3
|
const TERMINAL = ['succeeded', 'failed', 'cancelled'];
|
|
29
4
|
export class DrizzleAiTaskStore {
|
|
30
5
|
constructor(db, taskTable, eventTable) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-task-store.js","sourceRoot":"","sources":["../../src/stores/ai-task-store.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,
|
|
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
|
|
1
|
+
import { type CacheEntry, type ICacheStore } from '@modern-admin/core';
|
|
2
2
|
import type { DrizzleLike, SystemTables } from '../types.js';
|
|
3
3
|
export declare class DrizzleCacheStore implements ICacheStore {
|
|
4
4
|
private readonly db;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache-store.d.ts","sourceRoot":"","sources":["../../src/stores/cache-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"cache-store.d.ts","sourceRoot":"","sources":["../../src/stores/cache-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,UAAU,EAAiB,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAEtG,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE5D,qBAAa,iBAAkB,YAAW,WAAW;IAEjD,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,KAAK;gBADL,EAAE,EAAE,WAAW,EACf,KAAK,EAAE,YAAY,CAAC,SAAS,CAAC;IAG3C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAe5C,GAAG,CACP,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,OAAO,EACd,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;KAAO,GAChD,OAAO,CAAC,IAAI,CAAC;IAYV,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxC;;;;;;OAMG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IA4B/C,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;CAO/B"}
|
|
@@ -1,12 +1,5 @@
|
|
|
1
|
+
import { rowToCacheEntry } from '@modern-admin/core';
|
|
1
2
|
import { eq, inArray, lt } from 'drizzle-orm';
|
|
2
|
-
const rowToEntry = (row) => ({
|
|
3
|
-
key: row.key,
|
|
4
|
-
value: row.value,
|
|
5
|
-
tags: Array.isArray(row.tags) ? row.tags : [],
|
|
6
|
-
expiresAt: row.expiresAt ? row.expiresAt.toISOString() : null,
|
|
7
|
-
createdAt: row.createdAt.toISOString(),
|
|
8
|
-
updatedAt: row.updatedAt.toISOString(),
|
|
9
|
-
});
|
|
10
3
|
export class DrizzleCacheStore {
|
|
11
4
|
constructor(db, table) {
|
|
12
5
|
this.db = db;
|
|
@@ -25,7 +18,7 @@ export class DrizzleCacheStore {
|
|
|
25
18
|
await this.db.delete(this.table).where(eq(this.table.key, key));
|
|
26
19
|
return null;
|
|
27
20
|
}
|
|
28
|
-
return
|
|
21
|
+
return rowToCacheEntry(row);
|
|
29
22
|
}
|
|
30
23
|
async set(key, value, options = {}) {
|
|
31
24
|
const expiresAt = options.ttlMs ? new Date(Date.now() + options.ttlMs) : null;
|
|
@@ -52,10 +45,27 @@ export class DrizzleCacheStore {
|
|
|
52
45
|
if (!tags.length)
|
|
53
46
|
return 0;
|
|
54
47
|
const set = new Set(tags);
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
48
|
+
// Page through the table (key ordered, key+tags projection only) so a
|
|
49
|
+
// large cache never loads whole in memory at once.
|
|
50
|
+
const BATCH = 1000;
|
|
51
|
+
const targetKeys = [];
|
|
52
|
+
let offset = 0;
|
|
53
|
+
for (;;) {
|
|
54
|
+
const rows = (await this.db
|
|
55
|
+
.select({ key: this.table.key, tags: this.table.tags })
|
|
56
|
+
.from(this.table)
|
|
57
|
+
.orderBy(this.table.key)
|
|
58
|
+
.limit(BATCH)
|
|
59
|
+
.offset(offset));
|
|
60
|
+
for (const r of rows) {
|
|
61
|
+
if (Array.isArray(r.tags) && r.tags.some((t) => set.has(t))) {
|
|
62
|
+
targetKeys.push(r.key);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
if (rows.length < BATCH)
|
|
66
|
+
break;
|
|
67
|
+
offset += BATCH;
|
|
68
|
+
}
|
|
59
69
|
if (!targetKeys.length)
|
|
60
70
|
return 0;
|
|
61
71
|
await this.db.delete(this.table).where(inArray(this.table.key, targetKeys));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache-store.js","sourceRoot":"","sources":["../../src/stores/cache-store.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cache-store.js","sourceRoot":"","sources":["../../src/stores/cache-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-store.d.ts","sourceRoot":"","sources":["../../src/stores/config-store.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"config-store.d.ts","sourceRoot":"","sources":["../../src/stores/config-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,WAAW,EAEhB,KAAK,WAAW,EAChB,KAAK,YAAY,EAClB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE5D,qBAAa,kBAAmB,YAAW,YAAY;IAEnD,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,KAAK;gBADL,EAAE,EAAE,WAAW,EACf,KAAK,EAAE,YAAY,CAAC,UAAU,CAAC;IAGlD,OAAO,CAAC,WAAW;IAOb,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS9E,GAAG,CACP,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,IAAI,CAAC;IAiBV,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9E,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;CAW/E"}
|
|
@@ -1,12 +1,5 @@
|
|
|
1
|
-
import { uuidv7 } from '@modern-admin/core';
|
|
1
|
+
import { rowToConfigEntry as rowToEntry, uuidv7, } from '@modern-admin/core';
|
|
2
2
|
import { and, asc, eq, isNull } from 'drizzle-orm';
|
|
3
|
-
const rowToEntry = (row) => ({
|
|
4
|
-
scope: row.scope,
|
|
5
|
-
scopeId: row.scopeId,
|
|
6
|
-
key: row.key,
|
|
7
|
-
value: row.value,
|
|
8
|
-
updatedAt: row.updatedAt.toISOString(),
|
|
9
|
-
});
|
|
10
3
|
export class DrizzleConfigStore {
|
|
11
4
|
constructor(db, table) {
|
|
12
5
|
this.db = db;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-store.js","sourceRoot":"","sources":["../../src/stores/config-store.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"config-store.js","sourceRoot":"","sources":["../../src/stores/config-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history-store.d.ts","sourceRoot":"","sources":["../../src/stores/history-store.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
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,EAEd,KAAK,aAAa,EACnB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE5D,qBAAa,mBAAoB,YAAW,aAAa;IAErD,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,KAAK;gBADL,EAAE,EAAE,WAAW,EACf,KAAK,EAAE,YAAY,CAAC,WAAW,CAAC;IAG7C,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;IAgBnB,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;IAgBpB,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAe3F,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;CAIjF"}
|
|
@@ -1,17 +1,5 @@
|
|
|
1
|
-
import { uuidv7 } from '@modern-admin/core';
|
|
1
|
+
import { rowToHistoryEntry as rowToEntry, uuidv7, } from '@modern-admin/core';
|
|
2
2
|
import { and, desc, eq } from 'drizzle-orm';
|
|
3
|
-
const rowToEntry = (row) => ({
|
|
4
|
-
id: row.id,
|
|
5
|
-
resourceId: row.resourceId,
|
|
6
|
-
recordId: row.recordId,
|
|
7
|
-
op: row.op,
|
|
8
|
-
...(row.userId !== null ? { userId: row.userId } : {}),
|
|
9
|
-
snapshot: row.snapshot ?? {},
|
|
10
|
-
...(row.snapshotBefore !== null && row.snapshotBefore !== undefined
|
|
11
|
-
? { snapshotBefore: row.snapshotBefore }
|
|
12
|
-
: {}),
|
|
13
|
-
createdAt: row.createdAt.toISOString(),
|
|
14
|
-
});
|
|
15
3
|
export class DrizzleHistoryStore {
|
|
16
4
|
constructor(db, table) {
|
|
17
5
|
this.db = db;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history-store.js","sourceRoot":"","sources":["../../src/stores/history-store.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"history-store.js","sourceRoot":"","sources":["../../src/stores/history-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log-store.d.ts","sourceRoot":"","sources":["../../src/stores/log-store.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
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;AAE5D,qBAAa,eAAgB,YAAW,kBAAkB;IAEtD,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,KAAK;gBADL,EAAE,EAAE,WAAW,EACf,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC;IAGzC,MAAM,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAc5C,IAAI,CAAC,MAAM,GAAE,UAAU,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;CAkB9F"}
|
package/dist/stores/log-store.js
CHANGED
|
@@ -1,20 +1,5 @@
|
|
|
1
|
-
import { uuidv7 } from '@modern-admin/core';
|
|
1
|
+
import { rowToLogEntry, uuidv7, } from '@modern-admin/core';
|
|
2
2
|
import { and, desc, eq, gte, inArray, lte } from 'drizzle-orm';
|
|
3
|
-
const rowToEntry = (row) => ({
|
|
4
|
-
id: row.id,
|
|
5
|
-
resourceId: row.resourceId,
|
|
6
|
-
action: row.action,
|
|
7
|
-
...(row.recordId !== null ? { recordId: row.recordId } : {}),
|
|
8
|
-
...(Array.isArray(row.recordIds) ? { recordIds: row.recordIds } : {}),
|
|
9
|
-
...(row.userId !== null ? { userId: row.userId } : {}),
|
|
10
|
-
...(row.payload !== null && row.payload !== undefined
|
|
11
|
-
? { payload: row.payload }
|
|
12
|
-
: {}),
|
|
13
|
-
...(row.result !== null && row.result !== undefined
|
|
14
|
-
? { result: row.result }
|
|
15
|
-
: {}),
|
|
16
|
-
at: Number(row.at),
|
|
17
|
-
});
|
|
18
3
|
export class DrizzleLogStore {
|
|
19
4
|
constructor(db, table) {
|
|
20
5
|
this.db = db;
|
|
@@ -56,7 +41,7 @@ export class DrizzleLogStore {
|
|
|
56
41
|
if (filter.offset !== undefined)
|
|
57
42
|
q = q.offset(filter.offset);
|
|
58
43
|
const rows = (await q);
|
|
59
|
-
return rows.map(
|
|
44
|
+
return rows.map(rowToLogEntry);
|
|
60
45
|
}
|
|
61
46
|
}
|
|
62
47
|
//# 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,
|
|
1
|
+
{"version":3,"file":"log-store.js","sourceRoot":"","sources":["../../src/stores/log-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhook-store.d.ts","sourceRoot":"","sources":["../../src/stores/webhook-store.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"webhook-store.d.ts","sourceRoot":"","sources":["../../src/stores/webhook-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,aAAa,EAClB,KAAK,OAAO,EACZ,KAAK,eAAe,EACpB,KAAK,YAAY,EAElB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE5D,qBAAa,mBAAoB,YAAW,aAAa;IAErD,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAFb,EAAE,EAAE,WAAW,EACf,SAAS,EAAE,YAAY,CAAC,WAAW,CAAC,EACpC,aAAa,EAAE,YAAY,CAAC,mBAAmB,CAAC;IAG7D,IAAI,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAQ1B,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IASxC,MAAM,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAmB7C,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAoBlE,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjC,cAAc,CAClB,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,GAAG,WAAW,CAAC,GAClD,OAAO,CAAC,eAAe,CAAC;IAmBrB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;CAShF"}
|
|
@@ -1,32 +1,5 @@
|
|
|
1
|
-
import { uuidv7, } from '@modern-admin/core';
|
|
1
|
+
import { rowToDelivery, rowToWebhook, uuidv7, } from '@modern-admin/core';
|
|
2
2
|
import { desc, eq } from 'drizzle-orm';
|
|
3
|
-
const rowToWebhook = (row) => ({
|
|
4
|
-
id: row.id,
|
|
5
|
-
name: row.name,
|
|
6
|
-
url: row.url,
|
|
7
|
-
events: Array.isArray(row.events) ? row.events : [],
|
|
8
|
-
resourceId: row.resourceId,
|
|
9
|
-
enabled: row.enabled,
|
|
10
|
-
...(row.secret !== null ? { secret: row.secret } : {}),
|
|
11
|
-
headers: row.headers ?? {},
|
|
12
|
-
filters: row.filters ?? {},
|
|
13
|
-
payloadFields: Array.isArray(row.payloadFields) ? row.payloadFields : [],
|
|
14
|
-
createdAt: row.createdAt.toISOString(),
|
|
15
|
-
updatedAt: row.updatedAt.toISOString(),
|
|
16
|
-
});
|
|
17
|
-
const rowToDelivery = (row) => ({
|
|
18
|
-
id: row.id,
|
|
19
|
-
webhookId: row.webhookId,
|
|
20
|
-
event: row.event,
|
|
21
|
-
payload: row.payload ?? {},
|
|
22
|
-
status: row.status,
|
|
23
|
-
...(row.responseStatus !== null ? { responseStatus: row.responseStatus } : {}),
|
|
24
|
-
...(row.responseBody !== null ? { responseBody: row.responseBody } : {}),
|
|
25
|
-
...(row.error !== null ? { error: row.error } : {}),
|
|
26
|
-
attempt: row.attempt,
|
|
27
|
-
createdAt: row.createdAt.toISOString(),
|
|
28
|
-
...(row.deliveredAt !== null ? { deliveredAt: row.deliveredAt.toISOString() } : {}),
|
|
29
|
-
});
|
|
30
3
|
export class DrizzleWebhookStore {
|
|
31
4
|
constructor(db, hookTable, deliveryTable) {
|
|
32
5
|
this.db = db;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhook-store.js","sourceRoot":"","sources":["../../src/stores/webhook-store.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"webhook-store.js","sourceRoot":"","sources":["../../src/stores/webhook-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.3.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": [
|
|
@@ -44,12 +44,12 @@
|
|
|
44
44
|
}
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
|
-
"@modern-admin/core": "^0.
|
|
47
|
+
"@modern-admin/core": "^0.3.0"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
|
-
"@modern-admin/tsconfig": "0.
|
|
50
|
+
"@modern-admin/tsconfig": "0.3.0",
|
|
51
51
|
"@types/bun": "^1.3.13",
|
|
52
|
-
"drizzle-orm": "^0.45.
|
|
52
|
+
"drizzle-orm": "^0.45.2",
|
|
53
53
|
"typescript": "^6.0.3"
|
|
54
54
|
},
|
|
55
55
|
"peerDependencies": {
|
|
@@ -1,66 +1,18 @@
|
|
|
1
1
|
import {
|
|
2
|
+
rowToEvent,
|
|
3
|
+
rowToTask,
|
|
2
4
|
uuidv7,
|
|
3
5
|
type AiTask,
|
|
4
6
|
type AiTaskEvent,
|
|
5
7
|
type AiTaskInput,
|
|
6
8
|
type AiTaskStatus,
|
|
9
|
+
type EventRow,
|
|
7
10
|
type IAiTaskStore,
|
|
11
|
+
type TaskRow,
|
|
8
12
|
} from '@modern-admin/core'
|
|
9
13
|
import { and, asc, desc, eq, inArray, type SQL } from 'drizzle-orm'
|
|
10
14
|
import type { DrizzleLike, SystemTables } from '../types.js'
|
|
11
15
|
|
|
12
|
-
interface TaskRow {
|
|
13
|
-
id: string
|
|
14
|
-
kind: string
|
|
15
|
-
resourceId: string | null
|
|
16
|
-
recordId: string | null
|
|
17
|
-
userId: string | null
|
|
18
|
-
status: string
|
|
19
|
-
input: unknown
|
|
20
|
-
output: unknown
|
|
21
|
-
error: string | null
|
|
22
|
-
progress: number | null
|
|
23
|
-
createdAt: Date
|
|
24
|
-
updatedAt: Date
|
|
25
|
-
startedAt: Date | null
|
|
26
|
-
finishedAt: Date | null
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
interface EventRow {
|
|
30
|
-
id: string
|
|
31
|
-
taskId: string
|
|
32
|
-
type: string
|
|
33
|
-
data: unknown
|
|
34
|
-
createdAt: Date
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
const rowToTask = (row: TaskRow): AiTask => ({
|
|
38
|
-
id: row.id,
|
|
39
|
-
kind: row.kind,
|
|
40
|
-
...(row.resourceId !== null ? { resourceId: row.resourceId } : {}),
|
|
41
|
-
...(row.recordId !== null ? { recordId: row.recordId } : {}),
|
|
42
|
-
...(row.userId !== null ? { userId: row.userId } : {}),
|
|
43
|
-
status: row.status as AiTaskStatus,
|
|
44
|
-
input: (row.input as Record<string, unknown>) ?? {},
|
|
45
|
-
...(row.output !== null && row.output !== undefined
|
|
46
|
-
? { output: row.output as Record<string, unknown> }
|
|
47
|
-
: {}),
|
|
48
|
-
...(row.error !== null ? { error: row.error } : {}),
|
|
49
|
-
progress: row.progress,
|
|
50
|
-
createdAt: row.createdAt.toISOString(),
|
|
51
|
-
updatedAt: row.updatedAt.toISOString(),
|
|
52
|
-
...(row.startedAt !== null ? { startedAt: row.startedAt.toISOString() } : {}),
|
|
53
|
-
...(row.finishedAt !== null ? { finishedAt: row.finishedAt.toISOString() } : {}),
|
|
54
|
-
})
|
|
55
|
-
|
|
56
|
-
const rowToEvent = (row: EventRow): AiTaskEvent => ({
|
|
57
|
-
id: row.id,
|
|
58
|
-
taskId: row.taskId,
|
|
59
|
-
type: row.type,
|
|
60
|
-
data: (row.data as Record<string, unknown>) ?? {},
|
|
61
|
-
createdAt: row.createdAt.toISOString(),
|
|
62
|
-
})
|
|
63
|
-
|
|
64
16
|
const TERMINAL: AiTaskStatus[] = ['succeeded', 'failed', 'cancelled']
|
|
65
17
|
|
|
66
18
|
export class DrizzleAiTaskStore implements IAiTaskStore {
|
|
@@ -1,25 +1,7 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { rowToCacheEntry, type CacheEntry, type CacheRow, type ICacheStore } from '@modern-admin/core'
|
|
2
2
|
import { eq, inArray, lt } from 'drizzle-orm'
|
|
3
3
|
import type { DrizzleLike, SystemTables } from '../types.js'
|
|
4
4
|
|
|
5
|
-
interface CacheRow {
|
|
6
|
-
key: string
|
|
7
|
-
value: unknown
|
|
8
|
-
tags: unknown
|
|
9
|
-
expiresAt: Date | null
|
|
10
|
-
createdAt: Date
|
|
11
|
-
updatedAt: Date
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
const rowToEntry = (row: CacheRow): CacheEntry => ({
|
|
15
|
-
key: row.key,
|
|
16
|
-
value: row.value,
|
|
17
|
-
tags: Array.isArray(row.tags) ? (row.tags as string[]) : [],
|
|
18
|
-
expiresAt: row.expiresAt ? row.expiresAt.toISOString() : null,
|
|
19
|
-
createdAt: row.createdAt.toISOString(),
|
|
20
|
-
updatedAt: row.updatedAt.toISOString(),
|
|
21
|
-
})
|
|
22
|
-
|
|
23
5
|
export class DrizzleCacheStore implements ICacheStore {
|
|
24
6
|
constructor(
|
|
25
7
|
private readonly db: DrizzleLike,
|
|
@@ -38,7 +20,7 @@ export class DrizzleCacheStore implements ICacheStore {
|
|
|
38
20
|
await this.db.delete(this.table).where(eq(this.table.key, key))
|
|
39
21
|
return null
|
|
40
22
|
}
|
|
41
|
-
return
|
|
23
|
+
return rowToCacheEntry(row)
|
|
42
24
|
}
|
|
43
25
|
|
|
44
26
|
async set(
|
|
@@ -71,10 +53,26 @@ export class DrizzleCacheStore implements ICacheStore {
|
|
|
71
53
|
async invalidateTags(tags: string[]): Promise<number> {
|
|
72
54
|
if (!tags.length) return 0
|
|
73
55
|
const set = new Set(tags)
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
56
|
+
// Page through the table (key ordered, key+tags projection only) so a
|
|
57
|
+
// large cache never loads whole in memory at once.
|
|
58
|
+
const BATCH = 1000
|
|
59
|
+
const targetKeys: string[] = []
|
|
60
|
+
let offset = 0
|
|
61
|
+
for (;;) {
|
|
62
|
+
const rows = (await this.db
|
|
63
|
+
.select({ key: this.table.key, tags: this.table.tags })
|
|
64
|
+
.from(this.table)
|
|
65
|
+
.orderBy(this.table.key)
|
|
66
|
+
.limit(BATCH)
|
|
67
|
+
.offset(offset)) as Array<Pick<CacheRow, 'key' | 'tags'>>
|
|
68
|
+
for (const r of rows) {
|
|
69
|
+
if (Array.isArray(r.tags) && (r.tags as string[]).some((t) => set.has(t))) {
|
|
70
|
+
targetKeys.push(r.key)
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
if (rows.length < BATCH) break
|
|
74
|
+
offset += BATCH
|
|
75
|
+
}
|
|
78
76
|
if (!targetKeys.length) return 0
|
|
79
77
|
await this.db.delete(this.table).where(inArray(this.table.key, targetKeys))
|
|
80
78
|
return targetKeys.length
|
|
@@ -1,23 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
rowToConfigEntry as rowToEntry,
|
|
3
|
+
uuidv7,
|
|
4
|
+
type ConfigEntry,
|
|
5
|
+
type ConfigRow,
|
|
6
|
+
type ConfigScope,
|
|
7
|
+
type IConfigStore,
|
|
8
|
+
} from '@modern-admin/core'
|
|
2
9
|
import { and, asc, eq, isNull, type SQL } from 'drizzle-orm'
|
|
3
10
|
import type { DrizzleLike, SystemTables } from '../types.js'
|
|
4
11
|
|
|
5
|
-
interface ConfigRow {
|
|
6
|
-
scope: string
|
|
7
|
-
scopeId: string | null
|
|
8
|
-
key: string
|
|
9
|
-
value: unknown
|
|
10
|
-
updatedAt: Date
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
const rowToEntry = (row: ConfigRow): ConfigEntry => ({
|
|
14
|
-
scope: row.scope as ConfigScope,
|
|
15
|
-
scopeId: row.scopeId,
|
|
16
|
-
key: row.key,
|
|
17
|
-
value: row.value,
|
|
18
|
-
updatedAt: row.updatedAt.toISOString(),
|
|
19
|
-
})
|
|
20
|
-
|
|
21
12
|
export class DrizzleConfigStore implements IConfigStore {
|
|
22
13
|
constructor(
|
|
23
14
|
private readonly db: DrizzleLike,
|
|
@@ -1,32 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
rowToHistoryEntry as rowToEntry,
|
|
3
|
+
uuidv7,
|
|
4
|
+
type HistoryEntry,
|
|
5
|
+
type HistoryOp,
|
|
6
|
+
type HistoryRow,
|
|
7
|
+
type IHistoryStore,
|
|
8
|
+
} from '@modern-admin/core'
|
|
2
9
|
import { and, desc, eq } from 'drizzle-orm'
|
|
3
10
|
import type { DrizzleLike, SystemTables } from '../types.js'
|
|
4
11
|
|
|
5
|
-
interface HistoryRow {
|
|
6
|
-
id: string
|
|
7
|
-
resourceId: string
|
|
8
|
-
recordId: string
|
|
9
|
-
op: string
|
|
10
|
-
userId: string | null
|
|
11
|
-
snapshot: unknown
|
|
12
|
-
snapshotBefore: unknown
|
|
13
|
-
diff: unknown
|
|
14
|
-
createdAt: Date
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
const rowToEntry = (row: HistoryRow): HistoryEntry => ({
|
|
18
|
-
id: row.id,
|
|
19
|
-
resourceId: row.resourceId,
|
|
20
|
-
recordId: row.recordId,
|
|
21
|
-
op: row.op as HistoryOp,
|
|
22
|
-
...(row.userId !== null ? { userId: row.userId } : {}),
|
|
23
|
-
snapshot: (row.snapshot as Record<string, unknown>) ?? {},
|
|
24
|
-
...(row.snapshotBefore !== null && row.snapshotBefore !== undefined
|
|
25
|
-
? { snapshotBefore: row.snapshotBefore as Record<string, unknown> }
|
|
26
|
-
: {}),
|
|
27
|
-
createdAt: row.createdAt.toISOString(),
|
|
28
|
-
})
|
|
29
|
-
|
|
30
12
|
export class DrizzleHistoryStore implements IHistoryStore {
|
|
31
13
|
constructor(
|
|
32
14
|
private readonly db: DrizzleLike,
|
package/src/stores/log-store.ts
CHANGED
|
@@ -1,35 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
rowToLogEntry,
|
|
3
|
+
uuidv7,
|
|
4
|
+
type ActionLogEntry,
|
|
5
|
+
type IQueryableLogStore,
|
|
6
|
+
type LogRow,
|
|
7
|
+
} from '@modern-admin/core'
|
|
2
8
|
import { and, desc, eq, gte, inArray, lte, type SQL } from 'drizzle-orm'
|
|
3
9
|
import type { DrizzleLike, SystemTables } from '../types.js'
|
|
4
10
|
|
|
5
|
-
interface LogRow {
|
|
6
|
-
id: string
|
|
7
|
-
resourceId: string
|
|
8
|
-
action: string
|
|
9
|
-
recordId: string | null
|
|
10
|
-
recordIds: unknown
|
|
11
|
-
userId: string | null
|
|
12
|
-
payload: unknown
|
|
13
|
-
result: unknown
|
|
14
|
-
at: number
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
const rowToEntry = (row: LogRow): ActionLogEntry => ({
|
|
18
|
-
id: row.id,
|
|
19
|
-
resourceId: row.resourceId,
|
|
20
|
-
action: row.action,
|
|
21
|
-
...(row.recordId !== null ? { recordId: row.recordId } : {}),
|
|
22
|
-
...(Array.isArray(row.recordIds) ? { recordIds: row.recordIds as string[] } : {}),
|
|
23
|
-
...(row.userId !== null ? { userId: row.userId } : {}),
|
|
24
|
-
...(row.payload !== null && row.payload !== undefined
|
|
25
|
-
? { payload: row.payload as Record<string, unknown> }
|
|
26
|
-
: {}),
|
|
27
|
-
...(row.result !== null && row.result !== undefined
|
|
28
|
-
? { result: row.result as Record<string, unknown> }
|
|
29
|
-
: {}),
|
|
30
|
-
at: Number(row.at),
|
|
31
|
-
})
|
|
32
|
-
|
|
33
11
|
export class DrizzleLogStore implements IQueryableLogStore {
|
|
34
12
|
constructor(
|
|
35
13
|
private readonly db: DrizzleLike,
|
|
@@ -66,6 +44,6 @@ export class DrizzleLogStore implements IQueryableLogStore {
|
|
|
66
44
|
if (filter.offset !== undefined) q = q.offset(filter.offset)
|
|
67
45
|
|
|
68
46
|
const rows = (await q) as LogRow[]
|
|
69
|
-
return rows.map(
|
|
47
|
+
return rows.map(rowToLogEntry)
|
|
70
48
|
}
|
|
71
49
|
}
|
|
@@ -1,72 +1,17 @@
|
|
|
1
1
|
import {
|
|
2
|
+
rowToDelivery,
|
|
3
|
+
rowToWebhook,
|
|
2
4
|
uuidv7,
|
|
5
|
+
type DeliveryRow,
|
|
3
6
|
type IWebhookStore,
|
|
4
7
|
type Webhook,
|
|
5
8
|
type WebhookDelivery,
|
|
6
|
-
type WebhookDeliveryStatus,
|
|
7
9
|
type WebhookInput,
|
|
10
|
+
type WebhookRow,
|
|
8
11
|
} from '@modern-admin/core'
|
|
9
12
|
import { desc, eq } from 'drizzle-orm'
|
|
10
13
|
import type { DrizzleLike, SystemTables } from '../types.js'
|
|
11
14
|
|
|
12
|
-
interface WebhookRow {
|
|
13
|
-
id: string
|
|
14
|
-
name: string
|
|
15
|
-
url: string
|
|
16
|
-
events: unknown
|
|
17
|
-
resourceId: string | null
|
|
18
|
-
enabled: boolean
|
|
19
|
-
secret: string | null
|
|
20
|
-
headers: unknown
|
|
21
|
-
filters: unknown
|
|
22
|
-
payloadFields: unknown
|
|
23
|
-
createdAt: Date
|
|
24
|
-
updatedAt: Date
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
interface DeliveryRow {
|
|
28
|
-
id: string
|
|
29
|
-
webhookId: string
|
|
30
|
-
event: string
|
|
31
|
-
payload: unknown
|
|
32
|
-
status: string
|
|
33
|
-
responseStatus: number | null
|
|
34
|
-
responseBody: string | null
|
|
35
|
-
error: string | null
|
|
36
|
-
attempt: number
|
|
37
|
-
createdAt: Date
|
|
38
|
-
deliveredAt: Date | null
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
const rowToWebhook = (row: WebhookRow): Webhook => ({
|
|
42
|
-
id: row.id,
|
|
43
|
-
name: row.name,
|
|
44
|
-
url: row.url,
|
|
45
|
-
events: Array.isArray(row.events) ? (row.events as string[]) : [],
|
|
46
|
-
resourceId: row.resourceId,
|
|
47
|
-
enabled: row.enabled,
|
|
48
|
-
...(row.secret !== null ? { secret: row.secret } : {}),
|
|
49
|
-
headers: (row.headers as Record<string, string>) ?? {},
|
|
50
|
-
filters: (row.filters as Record<string, string>) ?? {},
|
|
51
|
-
payloadFields: Array.isArray(row.payloadFields) ? (row.payloadFields as string[]) : [],
|
|
52
|
-
createdAt: row.createdAt.toISOString(),
|
|
53
|
-
updatedAt: row.updatedAt.toISOString(),
|
|
54
|
-
})
|
|
55
|
-
|
|
56
|
-
const rowToDelivery = (row: DeliveryRow): WebhookDelivery => ({
|
|
57
|
-
id: row.id,
|
|
58
|
-
webhookId: row.webhookId,
|
|
59
|
-
event: row.event,
|
|
60
|
-
payload: (row.payload as Record<string, unknown>) ?? {},
|
|
61
|
-
status: row.status as WebhookDeliveryStatus,
|
|
62
|
-
...(row.responseStatus !== null ? { responseStatus: row.responseStatus } : {}),
|
|
63
|
-
...(row.responseBody !== null ? { responseBody: row.responseBody } : {}),
|
|
64
|
-
...(row.error !== null ? { error: row.error } : {}),
|
|
65
|
-
attempt: row.attempt,
|
|
66
|
-
createdAt: row.createdAt.toISOString(),
|
|
67
|
-
...(row.deliveredAt !== null ? { deliveredAt: row.deliveredAt.toISOString() } : {}),
|
|
68
|
-
})
|
|
69
|
-
|
|
70
15
|
export class DrizzleWebhookStore implements IWebhookStore {
|
|
71
16
|
constructor(
|
|
72
17
|
private readonly db: DrizzleLike,
|