@x12i/memorix-writer 1.1.0 → 1.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/dist/data/memorix-write-adapter.d.ts +11 -7
- package/dist/data/memorix-write-adapter.d.ts.map +1 -1
- package/dist/data/memorix-write-adapter.js +21 -6
- package/dist/data/memorix-write-adapter.js.map +1 -1
- package/dist/graph-runs/clear-run.d.ts.map +1 -1
- package/dist/graph-runs/clear-run.js +5 -1
- package/dist/graph-runs/clear-run.js.map +1 -1
- package/dist/graph-runs/mark-failed.d.ts.map +1 -1
- package/dist/graph-runs/mark-failed.js +5 -1
- package/dist/graph-runs/mark-failed.js.map +1 -1
- package/dist/graph-runs/mark-started.d.ts.map +1 -1
- package/dist/graph-runs/mark-started.js +5 -1
- package/dist/graph-runs/mark-started.js.map +1 -1
- package/dist/graph-runs/write-result.d.ts.map +1 -1
- package/dist/graph-runs/write-result.js +54 -52
- package/dist/graph-runs/write-result.js.map +1 -1
- package/dist/mongo/collection-documents.d.ts +6 -1
- package/dist/mongo/collection-documents.d.ts.map +1 -1
- package/dist/mongo/collection-documents.js +8 -3
- package/dist/mongo/collection-documents.js.map +1 -1
- package/docs/GRAPH-RUNS.md +2 -2
- package/package.json +3 -3
|
@@ -1,30 +1,34 @@
|
|
|
1
|
+
import type { ClientSession } from "mongodb";
|
|
1
2
|
import type { MemorixDataTier } from "../mongo/tier.js";
|
|
2
3
|
import type { MemorixTarget } from "../mongo/target.js";
|
|
4
|
+
export type MemorixWriteAdapterOptions = {
|
|
5
|
+
session?: ClientSession;
|
|
6
|
+
};
|
|
3
7
|
export type MemorixWriteAdapter = {
|
|
4
8
|
target: MemorixTarget;
|
|
5
9
|
database: string;
|
|
6
|
-
findOne(collection: string, filter: Record<string, unknown
|
|
10
|
+
findOne(collection: string, filter: Record<string, unknown>, opts?: MemorixWriteAdapterOptions): Promise<Record<string, unknown> | null>;
|
|
7
11
|
findMany(collection: string, filter: Record<string, unknown>, opts?: {
|
|
8
12
|
limit?: number;
|
|
9
13
|
sort?: Record<string, unknown>;
|
|
10
|
-
}): Promise<Record<string, unknown>[]>;
|
|
11
|
-
insert(collection: string, document: Record<string, unknown
|
|
14
|
+
} & MemorixWriteAdapterOptions): Promise<Record<string, unknown>[]>;
|
|
15
|
+
insert(collection: string, document: Record<string, unknown>, opts?: MemorixWriteAdapterOptions): Promise<{
|
|
12
16
|
insertedId: unknown;
|
|
13
17
|
}>;
|
|
14
|
-
patch(collection: string, filter: Record<string, unknown>, $set: Record<string, unknown
|
|
18
|
+
patch(collection: string, filter: Record<string, unknown>, $set: Record<string, unknown>, opts?: MemorixWriteAdapterOptions): Promise<{
|
|
15
19
|
matchedCount: number;
|
|
16
20
|
modifiedCount: number;
|
|
17
21
|
}>;
|
|
18
|
-
replace(collection: string, filter: Record<string, unknown>, replacement: Record<string, unknown>, upsert?: boolean): Promise<{
|
|
22
|
+
replace(collection: string, filter: Record<string, unknown>, replacement: Record<string, unknown>, upsert?: boolean, opts?: MemorixWriteAdapterOptions): Promise<{
|
|
19
23
|
matchedCount: number;
|
|
20
24
|
modifiedCount: number;
|
|
21
25
|
upsertedCount: number;
|
|
22
26
|
}>;
|
|
23
|
-
update(collection: string, filter: Record<string, unknown>, update: Record<string, unknown
|
|
27
|
+
update(collection: string, filter: Record<string, unknown>, update: Record<string, unknown>, opts?: MemorixWriteAdapterOptions): Promise<{
|
|
24
28
|
matchedCount: number;
|
|
25
29
|
modifiedCount: number;
|
|
26
30
|
}>;
|
|
27
|
-
deleteOne(collection: string, filter: Record<string, unknown
|
|
31
|
+
deleteOne(collection: string, filter: Record<string, unknown>, opts?: MemorixWriteAdapterOptions): Promise<{
|
|
28
32
|
deletedCount: number;
|
|
29
33
|
}>;
|
|
30
34
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memorix-write-adapter.d.ts","sourceRoot":"","sources":["../../src/data/memorix-write-adapter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"memorix-write-adapter.d.ts","sourceRoot":"","sources":["../../src/data/memorix-write-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAU7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,MAAM,0BAA0B,GAAG;IACvC,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CACL,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,IAAI,CAAC,EAAE,0BAA0B,GAChC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IAC3C,QAAQ,CACN,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,0BAA0B,GACrF,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IACtC,MAAM,CACJ,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,IAAI,CAAC,EAAE,0BAA0B,GAChC,OAAO,CAAC;QAAE,UAAU,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACpC,KAAK,CACH,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,IAAI,CAAC,EAAE,0BAA0B,GAChC,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5D,OAAO,CACL,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,MAAM,CAAC,EAAE,OAAO,EAChB,IAAI,CAAC,EAAE,0BAA0B,GAChC,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnF,MAAM,CACJ,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,IAAI,CAAC,EAAE,0BAA0B,GAChC,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5D,SAAS,CACP,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,IAAI,CAAC,EAAE,0BAA0B,GAChC,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG;IAC7C,MAAM,EAAE,aAAa,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB,CAAC;AAgBF,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE,gCAAgC,GACxC,mBAAmB,CA6DrB"}
|
|
@@ -17,7 +17,11 @@ export function createMemorixWriteAdapter(tier, options) {
|
|
|
17
17
|
return {
|
|
18
18
|
target: options.target,
|
|
19
19
|
database,
|
|
20
|
-
findOne: (collection, filter) => getMemorixCollectionDocument(scopedTier, {
|
|
20
|
+
findOne: (collection, filter, opts) => getMemorixCollectionDocument(scopedTier, {
|
|
21
|
+
collection,
|
|
22
|
+
filter,
|
|
23
|
+
session: opts?.session,
|
|
24
|
+
}),
|
|
21
25
|
findMany: async (collection, filter, opts) => {
|
|
22
26
|
const r = await listMemorixCollectionDocuments(scopedTier, {
|
|
23
27
|
collection,
|
|
@@ -27,20 +31,31 @@ export function createMemorixWriteAdapter(tier, options) {
|
|
|
27
31
|
});
|
|
28
32
|
return r.documents;
|
|
29
33
|
},
|
|
30
|
-
insert: (collection, document) => insertMemorixCollectionDocument(scopedTier, { collection, document }),
|
|
31
|
-
patch: (collection, filter, $set) => patchMemorixCollectionDocument(scopedTier, {
|
|
32
|
-
|
|
34
|
+
insert: (collection, document, opts) => insertMemorixCollectionDocument(scopedTier, { collection, document }),
|
|
35
|
+
patch: (collection, filter, $set, opts) => patchMemorixCollectionDocument(scopedTier, {
|
|
36
|
+
collection,
|
|
37
|
+
filter,
|
|
38
|
+
$set,
|
|
39
|
+
session: opts?.session,
|
|
40
|
+
}),
|
|
41
|
+
replace: (collection, filter, replacement, upsert, opts) => replaceMemorixCollectionDocument(scopedTier, {
|
|
33
42
|
collection,
|
|
34
43
|
filter,
|
|
35
44
|
replacement,
|
|
36
45
|
upsert,
|
|
46
|
+
session: opts?.session,
|
|
37
47
|
}),
|
|
38
|
-
update: (collection, filter, update) => updateMemorixCollectionDocument(scopedTier, {
|
|
48
|
+
update: (collection, filter, update, opts) => updateMemorixCollectionDocument(scopedTier, {
|
|
39
49
|
collection,
|
|
40
50
|
filter,
|
|
41
51
|
update: update,
|
|
52
|
+
session: opts?.session,
|
|
53
|
+
}),
|
|
54
|
+
deleteOne: (collection, filter, opts) => deleteMemorixCollectionDocument(scopedTier, {
|
|
55
|
+
collection,
|
|
56
|
+
filter,
|
|
57
|
+
session: opts?.session,
|
|
42
58
|
}),
|
|
43
|
-
deleteOne: (collection, filter) => deleteMemorixCollectionDocument(scopedTier, { collection, filter }),
|
|
44
59
|
};
|
|
45
60
|
}
|
|
46
61
|
//# sourceMappingURL=memorix-write-adapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memorix-write-adapter.js","sourceRoot":"","sources":["../../src/data/memorix-write-adapter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"memorix-write-adapter.js","sourceRoot":"","sources":["../../src/data/memorix-write-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clear-run.d.ts","sourceRoot":"","sources":["../../src/graph-runs/clear-run.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"clear-run.d.ts","sourceRoot":"","sources":["../../src/graph-runs/clear-run.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAM9D,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,EAAE,IAAI,CAAC;IACT,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,gBAAgB,CAAC;CAC7B,CAAC;AAEF,wBAAsB,aAAa,CACjC,MAAM,EAAE,mBAAmB,EAC3B,GAAG,EAAE,gBAAgB,EACrB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,mBAAmB,CAAC,CAsB9B"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { MemorixWriterError } from "../errors/errors.js";
|
|
1
2
|
import { graphRunDotPath } from "./constants.js";
|
|
2
3
|
import { createGraphRunWriterContext, loadSourceRecord } from "./context.js";
|
|
3
4
|
import { graphRunLogContext } from "./logging.js";
|
|
@@ -10,9 +11,12 @@ export async function clearGraphRun(client, ref, graphId) {
|
|
|
10
11
|
recordRef: ref,
|
|
11
12
|
operation: "clearGraphRun",
|
|
12
13
|
});
|
|
13
|
-
await ctx.adapter.update(ctx.resolved.collection, ctx.resolved.filter, {
|
|
14
|
+
const unset = await ctx.adapter.update(ctx.resolved.collection, ctx.resolved.filter, {
|
|
14
15
|
$unset: { [graphRunDotPath(graphId)]: "" },
|
|
15
16
|
});
|
|
17
|
+
if (unset.matchedCount === 0) {
|
|
18
|
+
throw new MemorixWriterError("RECORD_NOT_FOUND", `Source record disappeared while clearing _graphRuns for ${ctx.resolved.collection}`);
|
|
19
|
+
}
|
|
16
20
|
return { ok: true, graphId, recordRef: ref };
|
|
17
21
|
}
|
|
18
22
|
//# sourceMappingURL=clear-run.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clear-run.js","sourceRoot":"","sources":["../../src/graph-runs/clear-run.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,2BAA2B,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAQlD,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAA2B,EAC3B,GAAqB,EACrB,OAAe;IAEf,MAAM,GAAG,GAAG,MAAM,2BAA2B,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3D,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAE5B,kBAAkB,CAAC;QACjB,QAAQ,EAAE,EAAE;QACZ,OAAO;QACP,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,eAAe;KAC3B,CAAC,CAAC;IAEH,MAAM,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE;
|
|
1
|
+
{"version":3,"file":"clear-run.js","sourceRoot":"","sources":["../../src/graph-runs/clear-run.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,2BAA2B,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAQlD,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAA2B,EAC3B,GAAqB,EACrB,OAAe;IAEf,MAAM,GAAG,GAAG,MAAM,2BAA2B,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3D,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAE5B,kBAAkB,CAAC;QACjB,QAAQ,EAAE,EAAE;QACZ,OAAO;QACP,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,eAAe;KAC3B,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE;QACnF,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;KAC3C,CAAC,CAAC;IACH,IAAI,KAAK,CAAC,YAAY,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,kBAAkB,CAC1B,kBAAkB,EAClB,2DAA2D,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,CACrF,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;AAC/C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mark-failed.d.ts","sourceRoot":"","sources":["../../src/graph-runs/mark-failed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EACjB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"mark-failed.d.ts","sourceRoot":"","sources":["../../src/graph-runs/mark-failed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EACjB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAU9D,MAAM,MAAM,yBAAyB,GAAG;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,aAAa,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,EAAE,EAAE,IAAI,CAAC;IACT,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,gBAAgB,CAAC;CAC7B,CAAC;AAEF,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,mBAAmB,EAC3B,GAAG,EAAE,gBAAgB,EACrB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,yBAAyB,GAC9B,OAAO,CAAC,wBAAwB,CAAC,CAoCnC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { MemorixWriterError } from "../errors/errors.js";
|
|
1
2
|
import { graphRunDotPath } from "./constants.js";
|
|
2
3
|
import { createGraphRunWriterContext, loadSourceRecord, readGraphRunEntry, } from "./context.js";
|
|
3
4
|
import { graphRunLogContext } from "./logging.js";
|
|
@@ -23,9 +24,12 @@ export async function markGraphRunFailed(client, ref, graphId, opts) {
|
|
|
23
24
|
? { graphVersion: existing.graphVersion }
|
|
24
25
|
: {}),
|
|
25
26
|
};
|
|
26
|
-
await ctx.adapter.patch(ctx.resolved.collection, ctx.resolved.filter, {
|
|
27
|
+
const stamp = await ctx.adapter.patch(ctx.resolved.collection, ctx.resolved.filter, {
|
|
27
28
|
[graphRunDotPath(graphId)]: entry,
|
|
28
29
|
});
|
|
30
|
+
if (stamp.matchedCount === 0) {
|
|
31
|
+
throw new MemorixWriterError("RECORD_NOT_FOUND", `Source record disappeared while stamping _graphRuns for ${ctx.resolved.collection}`);
|
|
32
|
+
}
|
|
29
33
|
return { ok: true, graphId, recordRef: ref };
|
|
30
34
|
}
|
|
31
35
|
//# sourceMappingURL=mark-failed.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mark-failed.js","sourceRoot":"","sources":["../../src/graph-runs/mark-failed.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EACL,2BAA2B,EAC3B,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAclD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAA2B,EAC3B,GAAqB,EACrB,OAAe,EACf,IAA+B;IAE/B,MAAM,GAAG,GAAG,MAAM,2BAA2B,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3D,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAE7C,kBAAkB,CAAC;QACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,OAAO;QACP,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,oBAAoB;KAChC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG;QACZ,MAAM,EAAE,QAAiB;QACzB,SAAS,EAAE,QAAQ,EAAE,SAAS,IAAI,WAAW;QAC7C,WAAW;QACX,YAAY,EAAE,IAAI,CAAC,QAAQ;QAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,GAAG,CAAC,QAAQ,EAAE,YAAY,KAAK,SAAS;YACtC,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE;YACzC,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;IAEF,MAAM,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE;
|
|
1
|
+
{"version":3,"file":"mark-failed.js","sourceRoot":"","sources":["../../src/graph-runs/mark-failed.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EACL,2BAA2B,EAC3B,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAclD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAA2B,EAC3B,GAAqB,EACrB,OAAe,EACf,IAA+B;IAE/B,MAAM,GAAG,GAAG,MAAM,2BAA2B,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3D,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAE7C,kBAAkB,CAAC;QACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,OAAO;QACP,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,oBAAoB;KAChC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG;QACZ,MAAM,EAAE,QAAiB;QACzB,SAAS,EAAE,QAAQ,EAAE,SAAS,IAAI,WAAW;QAC7C,WAAW;QACX,YAAY,EAAE,IAAI,CAAC,QAAQ;QAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,GAAG,CAAC,QAAQ,EAAE,YAAY,KAAK,SAAS;YACtC,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE;YACzC,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;IAEF,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE;QAClF,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK;KAClC,CAAC,CAAC;IACH,IAAI,KAAK,CAAC,YAAY,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,kBAAkB,CAC1B,kBAAkB,EAClB,2DAA2D,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,CACrF,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;AAC/C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mark-started.d.ts","sourceRoot":"","sources":["../../src/graph-runs/mark-started.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"mark-started.d.ts","sourceRoot":"","sources":["../../src/graph-runs/mark-started.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAU9D,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,EAAE,EAAE,IAAI,CAAC;IACT,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,gBAAgB,CAAC;CAC7B,CAAC;AAEF,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,mBAAmB,EAC3B,GAAG,EAAE,gBAAgB,EACrB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,0BAA0B,GAC/B,OAAO,CAAC,yBAAyB,CAAC,CAuCpC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { MemorixWriterError } from "../errors/errors.js";
|
|
1
2
|
import { graphRunDotPath } from "./constants.js";
|
|
2
3
|
import { createGraphRunWriterContext, loadSourceRecord, readGraphRunEntry, } from "./context.js";
|
|
3
4
|
import { graphRunLogContext } from "./logging.js";
|
|
@@ -23,9 +24,12 @@ export async function markGraphRunStarted(client, ref, graphId, opts) {
|
|
|
23
24
|
attempts: opts.attempts,
|
|
24
25
|
...(opts.graphVersion !== undefined ? { graphVersion: opts.graphVersion } : {}),
|
|
25
26
|
};
|
|
26
|
-
await ctx.adapter.patch(ctx.resolved.collection, ctx.resolved.filter, {
|
|
27
|
+
const stamp = await ctx.adapter.patch(ctx.resolved.collection, ctx.resolved.filter, {
|
|
27
28
|
[graphRunDotPath(graphId)]: entry,
|
|
28
29
|
});
|
|
30
|
+
if (stamp.matchedCount === 0) {
|
|
31
|
+
throw new MemorixWriterError("RECORD_NOT_FOUND", `Source record disappeared while stamping _graphRuns for ${ctx.resolved.collection}`);
|
|
32
|
+
}
|
|
29
33
|
return { ok: true, action: "stamped", graphId, recordRef: ref };
|
|
30
34
|
}
|
|
31
35
|
//# sourceMappingURL=mark-started.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mark-started.js","sourceRoot":"","sources":["../../src/graph-runs/mark-started.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EACL,2BAA2B,EAC3B,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAelD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAA2B,EAC3B,GAAqB,EACrB,OAAe,EACf,IAAgC;IAEhC,MAAM,GAAG,GAAG,MAAM,2BAA2B,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3D,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAEjD,kBAAkB,CAAC;QACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,OAAO;QACP,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,qBAAqB;KACjC,CAAC,CAAC;IAEH,IACE,QAAQ,EAAE,MAAM,KAAK,aAAa;QAClC,QAAQ,CAAC,YAAY,KAAK,IAAI,CAAC,QAAQ,EACvC,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;IAChE,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,MAAM,KAAK,GAAG;QACZ,MAAM,EAAE,aAAsB;QAC9B,SAAS;QACT,YAAY,EAAE,IAAI,CAAC,QAAQ;QAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,GAAG,CAAC,IAAI,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChF,CAAC;IAEF,MAAM,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE;
|
|
1
|
+
{"version":3,"file":"mark-started.js","sourceRoot":"","sources":["../../src/graph-runs/mark-started.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EACL,2BAA2B,EAC3B,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAelD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAA2B,EAC3B,GAAqB,EACrB,OAAe,EACf,IAAgC;IAEhC,MAAM,GAAG,GAAG,MAAM,2BAA2B,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3D,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAEjD,kBAAkB,CAAC;QACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,OAAO;QACP,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,qBAAqB;KACjC,CAAC,CAAC;IAEH,IACE,QAAQ,EAAE,MAAM,KAAK,aAAa;QAClC,QAAQ,CAAC,YAAY,KAAK,IAAI,CAAC,QAAQ,EACvC,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;IAChE,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,MAAM,KAAK,GAAG;QACZ,MAAM,EAAE,aAAsB;QAC9B,SAAS;QACT,YAAY,EAAE,IAAI,CAAC,QAAQ;QAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,GAAG,CAAC,IAAI,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChF,CAAC;IAEF,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE;QAClF,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK;KAClC,CAAC,CAAC;IACH,IAAI,KAAK,CAAC,YAAY,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,kBAAkB,CAC1B,kBAAkB,EAClB,2DAA2D,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,CACrF,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;AAClE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write-result.d.ts","sourceRoot":"","sources":["../../src/graph-runs/write-result.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"write-result.d.ts","sourceRoot":"","sources":["../../src/graph-runs/write-result.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAc9D,MAAM,MAAM,0BAA0B,GAAG;IACvC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,EAAE,EAAE,IAAI,CAAC;IACT,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,MAAM,EAAE,qBAAqB,CAAC;CAC/B,CAAC;AAiBF,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,mBAAmB,EAC3B,GAAG,EAAE,gBAAgB,EACrB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,0BAA0B,GAC/B,OAAO,CAAC,2BAA2B,CAAC,CA4HtC"}
|
|
@@ -2,7 +2,7 @@ import { createMemorixWriteAdapter } from "../data/memorix-write-adapter.js";
|
|
|
2
2
|
import { getWriterMemorixTier } from "../client/ensure-tier.js";
|
|
3
3
|
import { MemorixWriterError } from "../errors/errors.js";
|
|
4
4
|
import { graphRunDotPath } from "./constants.js";
|
|
5
|
-
import {
|
|
5
|
+
import { readGraphRunEntry } from "./context.js";
|
|
6
6
|
import { graphRunLogContext } from "./logging.js";
|
|
7
7
|
import { resolvePersistencyCollection, resolvePersistencyRecordId, resolveRecordCollection, } from "./resolve-record-collection.js";
|
|
8
8
|
function resolveResultTarget(ref, persistencyTarget) {
|
|
@@ -15,80 +15,82 @@ function resolveResultIdField(target) {
|
|
|
15
15
|
return "knowledgeId";
|
|
16
16
|
return "entityId";
|
|
17
17
|
}
|
|
18
|
-
async function compensateResultWrite(args) {
|
|
19
|
-
if (args.priorDoc) {
|
|
20
|
-
await args.adapter.replace(args.resultCollection, args.resultFilter, args.priorDoc, false);
|
|
21
|
-
return;
|
|
22
|
-
}
|
|
23
|
-
await args.adapter.deleteOne(args.resultCollection, args.resultFilter);
|
|
24
|
-
}
|
|
25
18
|
export async function writeGraphRunResult(client, ref, graphId, opts) {
|
|
26
|
-
const ctx = await createGraphRunWriterContext(client, ref);
|
|
27
|
-
const sourceDoc = await loadSourceRecord(ctx);
|
|
28
|
-
const existing = readGraphRunEntry(sourceDoc, graphId);
|
|
29
19
|
graphRunLogContext({
|
|
30
20
|
jobRunId: opts.jobRunId,
|
|
31
21
|
graphId,
|
|
32
22
|
recordRef: ref,
|
|
33
23
|
operation: "writeGraphRunResult",
|
|
34
24
|
});
|
|
25
|
+
const tier = await getWriterMemorixTier(client);
|
|
26
|
+
const resolved = resolveRecordCollection(ref);
|
|
27
|
+
const sourceAdapter = createMemorixWriteAdapter(tier, {
|
|
28
|
+
target: resolved.target,
|
|
29
|
+
});
|
|
35
30
|
const resultTarget = resolveResultTarget(ref, opts.persistencyTarget);
|
|
36
31
|
const resultRecordId = resolvePersistencyRecordId(ref, opts.persistencyTarget.recordIdSource);
|
|
37
32
|
const resultCollection = resolvePersistencyCollection(opts.persistencyTarget);
|
|
38
33
|
const resultIdField = resolveResultIdField(resultTarget);
|
|
39
34
|
const resultFilter = { [resultIdField]: resultRecordId };
|
|
40
|
-
const
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
const resultDoc = {
|
|
44
|
-
...opts.resultPayload,
|
|
45
|
-
[resultIdField]: resultRecordId,
|
|
46
|
-
recordId: resultRecordId,
|
|
47
|
-
modifiedAt: new Date().toISOString(),
|
|
48
|
-
...(priorResultDoc?.createdAt
|
|
49
|
-
? { createdAt: priorResultDoc.createdAt }
|
|
50
|
-
: { createdAt: new Date().toISOString() }),
|
|
51
|
-
};
|
|
52
|
-
const replaceResult = await resultAdapter.replace(resultCollection, resultFilter, resultDoc, true);
|
|
53
|
-
if (replaceResult.matchedCount === 0 && replaceResult.upsertedCount === 0) {
|
|
54
|
-
throw new MemorixWriterError("DESCRIPTOR_MISSING", `Failed to write graph result to ${resultCollection}`);
|
|
55
|
-
}
|
|
35
|
+
const resultAdapter = createMemorixWriteAdapter(tier, {
|
|
36
|
+
target: resultTarget,
|
|
37
|
+
});
|
|
56
38
|
const resultPointer = {
|
|
57
39
|
target: resultTarget,
|
|
58
40
|
entityName: opts.persistencyTarget.entityName,
|
|
59
41
|
contentType: opts.persistencyTarget.contentType,
|
|
60
42
|
recordId: resultRecordId,
|
|
61
43
|
};
|
|
62
|
-
const
|
|
63
|
-
const entry = {
|
|
64
|
-
status: "done",
|
|
65
|
-
startedAt: existing?.startedAt ?? completedAt,
|
|
66
|
-
completedAt,
|
|
67
|
-
lastJobRunId: opts.jobRunId,
|
|
68
|
-
attempts: opts.attempts,
|
|
69
|
-
result: resultPointer,
|
|
70
|
-
...(opts.graphVersion !== undefined
|
|
71
|
-
? { graphVersion: opts.graphVersion }
|
|
72
|
-
: existing?.graphVersion !== undefined
|
|
73
|
-
? { graphVersion: existing.graphVersion }
|
|
74
|
-
: {}),
|
|
75
|
-
};
|
|
44
|
+
const session = tier.client.startSession();
|
|
76
45
|
try {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
46
|
+
await session.withTransaction(async () => {
|
|
47
|
+
const sourceDoc = await sourceAdapter.findOne(resolved.collection, resolved.filter, { session });
|
|
48
|
+
if (!sourceDoc) {
|
|
49
|
+
throw new MemorixWriterError("RECORD_NOT_FOUND", `Memorix record not found in ${resolved.collection} for ${resolved.idField}=${JSON.stringify(resolved.filter[resolved.idField])}`);
|
|
50
|
+
}
|
|
51
|
+
const existing = readGraphRunEntry(sourceDoc, graphId);
|
|
52
|
+
const priorResultDoc = await resultAdapter.findOne(resultCollection, resultFilter, { session });
|
|
53
|
+
const completedAt = new Date().toISOString();
|
|
54
|
+
const resultDoc = {
|
|
55
|
+
...opts.resultPayload,
|
|
56
|
+
[resultIdField]: resultRecordId,
|
|
57
|
+
recordId: resultRecordId,
|
|
58
|
+
modifiedAt: completedAt,
|
|
59
|
+
...(priorResultDoc?.createdAt
|
|
60
|
+
? { createdAt: priorResultDoc.createdAt }
|
|
61
|
+
: { createdAt: completedAt }),
|
|
62
|
+
};
|
|
63
|
+
const replaceResult = await resultAdapter.replace(resultCollection, resultFilter, resultDoc, true, { session });
|
|
64
|
+
if (replaceResult.matchedCount === 0 &&
|
|
65
|
+
replaceResult.upsertedCount === 0) {
|
|
66
|
+
throw new MemorixWriterError("DESCRIPTOR_MISSING", `Failed to write graph result to ${resultCollection}`);
|
|
67
|
+
}
|
|
68
|
+
const entry = {
|
|
69
|
+
status: "done",
|
|
70
|
+
startedAt: existing?.startedAt ?? completedAt,
|
|
71
|
+
completedAt,
|
|
72
|
+
lastJobRunId: opts.jobRunId,
|
|
73
|
+
attempts: opts.attempts,
|
|
74
|
+
result: resultPointer,
|
|
75
|
+
...(opts.graphVersion !== undefined
|
|
76
|
+
? { graphVersion: opts.graphVersion }
|
|
77
|
+
: existing?.graphVersion !== undefined
|
|
78
|
+
? { graphVersion: existing.graphVersion }
|
|
79
|
+
: {}),
|
|
80
|
+
};
|
|
81
|
+
const stamp = await sourceAdapter.patch(resolved.collection, resolved.filter, { [graphRunDotPath(graphId)]: entry }, { session });
|
|
82
|
+
if (stamp.matchedCount === 0) {
|
|
83
|
+
throw new MemorixWriterError("RECORD_NOT_FOUND", `Source record disappeared while stamping _graphRuns for ${resolveRecordCollection(ref).collection}`);
|
|
84
|
+
}
|
|
85
|
+
});
|
|
81
86
|
}
|
|
82
87
|
catch (err) {
|
|
83
|
-
await compensateResultWrite({
|
|
84
|
-
adapter: resultAdapter,
|
|
85
|
-
resultCollection,
|
|
86
|
-
resultFilter,
|
|
87
|
-
priorDoc: priorResultDoc,
|
|
88
|
-
});
|
|
89
88
|
if (err instanceof MemorixWriterError)
|
|
90
89
|
throw err;
|
|
91
|
-
throw new MemorixWriterError("GRAPH_RUN_STAMP_FAILED", err instanceof Error ? err.message : "
|
|
90
|
+
throw new MemorixWriterError("GRAPH_RUN_STAMP_FAILED", err instanceof Error ? err.message : "Graph run result transaction failed");
|
|
91
|
+
}
|
|
92
|
+
finally {
|
|
93
|
+
await session.endSession();
|
|
92
94
|
}
|
|
93
95
|
return { ok: true, graphId, recordRef: ref, result: resultPointer };
|
|
94
96
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write-result.js","sourceRoot":"","sources":["../../src/graph-runs/write-result.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,
|
|
1
|
+
{"version":3,"file":"write-result.js","sourceRoot":"","sources":["../../src/graph-runs/write-result.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Descriptor-driven physical collection I/O (e.g. `assets-analysis`). */
|
|
2
|
-
import type { Document, Sort } from "mongodb";
|
|
2
|
+
import type { ClientSession, Document, Sort } from "mongodb";
|
|
3
3
|
import type { MemorixDataTier } from "./tier.js";
|
|
4
4
|
export type ListMemorixCollectionDocumentsResult = {
|
|
5
5
|
documents: Record<string, unknown>[];
|
|
@@ -18,6 +18,7 @@ export declare function getMemorixCollectionDocument(tier: MemorixDataTier, args
|
|
|
18
18
|
collection: string;
|
|
19
19
|
filter: Record<string, unknown>;
|
|
20
20
|
projection?: Document;
|
|
21
|
+
session?: ClientSession;
|
|
21
22
|
}): Promise<Record<string, unknown> | null>;
|
|
22
23
|
export declare function insertMemorixCollectionDocument(tier: MemorixDataTier, args: {
|
|
23
24
|
collection: string;
|
|
@@ -30,6 +31,7 @@ export declare function replaceMemorixCollectionDocument(tier: MemorixDataTier,
|
|
|
30
31
|
filter: Record<string, unknown>;
|
|
31
32
|
replacement: Record<string, unknown>;
|
|
32
33
|
upsert?: boolean;
|
|
34
|
+
session?: ClientSession;
|
|
33
35
|
}): Promise<{
|
|
34
36
|
matchedCount: number;
|
|
35
37
|
modifiedCount: number;
|
|
@@ -39,6 +41,7 @@ export declare function updateMemorixCollectionDocument(tier: MemorixDataTier, a
|
|
|
39
41
|
collection: string;
|
|
40
42
|
filter: Record<string, unknown>;
|
|
41
43
|
update: Document;
|
|
44
|
+
session?: ClientSession;
|
|
42
45
|
}): Promise<{
|
|
43
46
|
matchedCount: number;
|
|
44
47
|
modifiedCount: number;
|
|
@@ -47,6 +50,7 @@ export declare function patchMemorixCollectionDocument(tier: MemorixDataTier, ar
|
|
|
47
50
|
collection: string;
|
|
48
51
|
filter: Record<string, unknown>;
|
|
49
52
|
$set: Record<string, unknown>;
|
|
53
|
+
session?: ClientSession;
|
|
50
54
|
}): Promise<{
|
|
51
55
|
matchedCount: number;
|
|
52
56
|
modifiedCount: number;
|
|
@@ -54,6 +58,7 @@ export declare function patchMemorixCollectionDocument(tier: MemorixDataTier, ar
|
|
|
54
58
|
export declare function deleteMemorixCollectionDocument(tier: MemorixDataTier, args: {
|
|
55
59
|
collection: string;
|
|
56
60
|
filter: Record<string, unknown>;
|
|
61
|
+
session?: ClientSession;
|
|
57
62
|
}): Promise<{
|
|
58
63
|
deletedCount: number;
|
|
59
64
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection-documents.d.ts","sourceRoot":"","sources":["../../src/mongo/collection-documents.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,OAAO,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"collection-documents.d.ts","sourceRoot":"","sources":["../../src/mongo/collection-documents.ts"],"names":[],"mappings":"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"}
|
|
@@ -63,6 +63,7 @@ export async function getMemorixCollectionDocument(tier, args) {
|
|
|
63
63
|
const filter = normalizeMemorixFilter(args.filter);
|
|
64
64
|
const doc = await col.findOne(filter, {
|
|
65
65
|
projection: args.projection,
|
|
66
|
+
...(args.session ? { session: args.session } : {}),
|
|
66
67
|
});
|
|
67
68
|
return doc;
|
|
68
69
|
}
|
|
@@ -76,7 +77,10 @@ export async function replaceMemorixCollectionDocument(tier, args) {
|
|
|
76
77
|
assertTierReady(tier);
|
|
77
78
|
const col = tier.db.collection(resolveCollection(args.collection));
|
|
78
79
|
const filter = normalizeMemorixFilter(args.filter);
|
|
79
|
-
const r = await col.replaceOne(filter, args.replacement, {
|
|
80
|
+
const r = await col.replaceOne(filter, args.replacement, {
|
|
81
|
+
upsert: args.upsert ?? false,
|
|
82
|
+
...(args.session ? { session: args.session } : {}),
|
|
83
|
+
});
|
|
80
84
|
return {
|
|
81
85
|
matchedCount: r.matchedCount,
|
|
82
86
|
modifiedCount: r.modifiedCount,
|
|
@@ -87,7 +91,7 @@ export async function updateMemorixCollectionDocument(tier, args) {
|
|
|
87
91
|
assertTierReady(tier);
|
|
88
92
|
const col = tier.db.collection(resolveCollection(args.collection));
|
|
89
93
|
const filter = normalizeMemorixFilter(args.filter);
|
|
90
|
-
const r = await col.updateOne(filter, args.update);
|
|
94
|
+
const r = await col.updateOne(filter, args.update, args.session ? { session: args.session } : undefined);
|
|
91
95
|
return { matchedCount: r.matchedCount, modifiedCount: r.modifiedCount };
|
|
92
96
|
}
|
|
93
97
|
export async function patchMemorixCollectionDocument(tier, args) {
|
|
@@ -95,13 +99,14 @@ export async function patchMemorixCollectionDocument(tier, args) {
|
|
|
95
99
|
collection: args.collection,
|
|
96
100
|
filter: args.filter,
|
|
97
101
|
update: { $set: args.$set },
|
|
102
|
+
session: args.session,
|
|
98
103
|
});
|
|
99
104
|
}
|
|
100
105
|
export async function deleteMemorixCollectionDocument(tier, args) {
|
|
101
106
|
assertTierReady(tier);
|
|
102
107
|
const col = tier.db.collection(resolveCollection(args.collection));
|
|
103
108
|
const filter = normalizeMemorixFilter(args.filter);
|
|
104
|
-
const r = await col.deleteOne(filter);
|
|
109
|
+
const r = await col.deleteOne(filter, args.session ? { session: args.session } : undefined);
|
|
105
110
|
return { deletedCount: r.deletedCount };
|
|
106
111
|
}
|
|
107
112
|
//# sourceMappingURL=collection-documents.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection-documents.js","sourceRoot":"","sources":["../../src/mongo/collection-documents.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAC9B,MAAM,cAAc,GAAG,GAAG,CAAC;AAC3B,MAAM,aAAa,GAAG,MAAM,CAAC;AAE7B,SAAS,eAAe,CAAC,IAAqB;IAC5C,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,2DAA2D,CAC5D,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,cAAsB;IAC/C,OAAO,2BAA2B,CAAC,cAAc,CAAC,CAAC;AACrD,CAAC;AAOD,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,IAAqB,EACrB,IAQC;IAED,eAAe,CAAC,IAAI,CAAC,CAAC;IACtB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACnE,MAAM,MAAM,GAAG,sBAAsB,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IACzD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IAC5B,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,aAAa,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,uCAAuC,aAAa,EAAE,CAAC,CAAC;IAC1E,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,kBAAkB,CAAC;IAC/C,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,cAAc,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,wCAAwC,cAAc,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,GAAG,EAAE,CAAU,EAAE,CAAC;IAE9C,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,MAAM,GAAG;aACpB,SAAS,CAAC;YACT,EAAE,MAAM,EAAE,MAAkB,EAAE;YAC9B;gBACE,MAAM,EAAE;oBACN,IAAI,EAAE;wBACJ,EAAE,KAAK,EAAE,IAAI,EAAE;wBACf,EAAE,KAAK,EAAE,IAAI,EAAE;wBACf,EAAE,MAAM,EAAE,KAAK,EAAE;wBACjB,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC5D;oBACD,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;iBACzB;aACF;SACF,CAAC;aACD,OAAO,EAAE,CAAC;QACb,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAGhB,CAAC;QACF,OAAO;YACL,SAAS,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE;YACvB,UAAU,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC;SACjC,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,CAAC,MAAM,GAAG;SACzB,IAAI,CAAC,MAAkB,EAAE;QACxB,IAAI;QACJ,IAAI;QACJ,KAAK;QACL,UAAU,EAAE,IAAI,CAAC,UAAU;KAC5B,CAAC;SACD,OAAO,EAAE,CAA8B,CAAC;IAC3C,OAAO,EAAE,SAAS,EAAE,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,IAAqB,EACrB,
|
|
1
|
+
{"version":3,"file":"collection-documents.js","sourceRoot":"","sources":["../../src/mongo/collection-documents.ts"],"names":[],"mappings":"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"}
|
package/docs/GRAPH-RUNS.md
CHANGED
|
@@ -37,7 +37,7 @@ Sets terminal `failed` status with `error` and `completedAt`. Call only when `jo
|
|
|
37
37
|
1. Upserts the graph result document to the persistency target collection (`<entityName>-<contentType>`).
|
|
38
38
|
2. Stamps the source record `_graphRuns.<graphId>` = `done` + result pointer + `completedAt`.
|
|
39
39
|
|
|
40
|
-
**Atomicity (
|
|
40
|
+
**Atomicity (Mongo transaction):** Result upsert and source stamp run inside a single Mongo transaction via `client.startSession().withTransaction()`. If either step fails, both are rolled back. **Requires a transaction-capable Mongo deployment** (replica set or sharded cluster). Standalone Mongo instances will fail at runtime when calling this API.
|
|
41
41
|
|
|
42
42
|
### `clearGraphRun(ref, graphId)`
|
|
43
43
|
|
|
@@ -82,7 +82,7 @@ Read exposure:
|
|
|
82
82
|
|------|------|
|
|
83
83
|
| `RECORD_NOT_FOUND` | Source record missing |
|
|
84
84
|
| `DESCRIPTOR_MISSING` | Result collection write failed |
|
|
85
|
-
| `GRAPH_RUN_STAMP_FAILED` |
|
|
85
|
+
| `GRAPH_RUN_STAMP_FAILED` | Transaction failed (stamp or result write) |
|
|
86
86
|
| `SYSTEM_FIELD_NOT_WRITABLE` | `_graphRuns` passed to `writeMemorixRecord` |
|
|
87
87
|
|
|
88
88
|
Log correlation shape: `{ jobRunId, graphId, recordRef, operation }`.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@x12i/memorix-writer",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "Descriptor-driven write layer for Memorix entity/event records and content objects",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -27,8 +27,8 @@
|
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
29
|
"@x12i/catalox": "^5.1.1",
|
|
30
|
-
"@x12i/memorix-descriptors": "^1.
|
|
31
|
-
"@x12i/memorix-retrieval": "^1.
|
|
30
|
+
"@x12i/memorix-descriptors": "^1.8.0",
|
|
31
|
+
"@x12i/memorix-retrieval": "^1.13.0",
|
|
32
32
|
"mongodb": "^6.21.0"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|