@sanoma-ai/workflows 0.11.16 → 0.11.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -8
- package/dist/call.d.ts +35 -4
- package/dist/call.js +128 -40
- package/dist/call.js.map +1 -1
- package/dist/client.d.ts +17 -8
- package/dist/client.js +90 -51
- package/dist/client.js.map +1 -1
- package/dist/collection.d.ts +25 -7
- package/dist/collection.js +236 -91
- package/dist/collection.js.map +1 -1
- package/dist/config.d.ts +24 -1
- package/dist/config.js +48 -10
- package/dist/config.js.map +1 -1
- package/dist/db/company.d.ts +20 -0
- package/dist/db/company.js +9 -1
- package/dist/db/company.js.map +1 -1
- package/dist/describe.js +1 -1
- package/dist/describe.js.map +1 -1
- package/dist/description.d.ts +6 -3
- package/dist/description.js +5 -4
- package/dist/description.js.map +1 -1
- package/dist/errors.d.ts +2 -1
- package/dist/errors.js +3 -2
- package/dist/errors.js.map +1 -1
- package/dist/grid.js +3 -2
- package/dist/grid.js.map +1 -1
- package/dist/host-derive.d.ts +13 -8
- package/dist/host-derive.js +26 -13
- package/dist/host-derive.js.map +1 -1
- package/dist/index.d.ts +7 -3
- package/dist/index.js +7 -3
- package/dist/index.js.map +1 -1
- package/dist/ledger.d.ts +7 -0
- package/dist/ledger.js +32 -2
- package/dist/ledger.js.map +1 -1
- package/dist/local-sandbox.d.ts +17 -0
- package/dist/local-sandbox.js +131 -0
- package/dist/local-sandbox.js.map +1 -0
- package/dist/op.d.ts +10 -2
- package/dist/op.js.map +1 -1
- package/dist/paths.d.ts +9 -0
- package/dist/paths.js +20 -4
- package/dist/paths.js.map +1 -1
- package/dist/resource.d.ts +7 -1
- package/dist/resource.js +5 -1
- package/dist/resource.js.map +1 -1
- package/dist/resources.d.ts +1 -1
- package/dist/resources.js +9 -6
- package/dist/resources.js.map +1 -1
- package/dist/runner-box.d.ts +23 -0
- package/dist/runner-box.js +181 -0
- package/dist/runner-box.js.map +1 -0
- package/dist/runner-protocol.d.ts +73 -0
- package/dist/runner-protocol.js +34 -0
- package/dist/runner-protocol.js.map +1 -0
- package/dist/sandbox-contract.d.ts +109 -0
- package/dist/sandbox-contract.js +26 -0
- package/dist/sandbox-contract.js.map +1 -0
- package/dist/sandbox-runner.cjs +7 -0
- package/dist/scenario.js +16 -7
- package/dist/scenario.js.map +1 -1
- package/dist/schedules.d.ts +11 -3
- package/dist/schedules.js +15 -3
- package/dist/schedules.js.map +1 -1
- package/dist/schema.js +6 -3
- package/dist/schema.js.map +1 -1
- package/dist/secret.d.ts +2 -1
- package/dist/secret.js +3 -2
- package/dist/secret.js.map +1 -1
- package/dist/shared.d.ts +39 -5
- package/dist/shared.js +13 -1
- package/dist/shared.js.map +1 -1
- package/dist/sites.js +10 -8
- package/dist/sites.js.map +1 -1
- package/dist/source.d.ts +21 -0
- package/dist/source.js.map +1 -1
- package/drizzle/company/0003_ledger_target.sql +2 -0
- package/drizzle/company/meta/0003_snapshot.json +845 -0
- package/drizzle/company/meta/_journal.json +7 -0
- package/package.json +5 -2
- package/src/call.ts +181 -60
- package/src/client.ts +118 -67
- package/src/collection.ts +265 -97
- package/src/config.ts +65 -16
- package/src/db/company.ts +9 -1
- package/src/describe.ts +1 -1
- package/src/description.ts +5 -4
- package/src/errors.ts +3 -2
- package/src/grid.ts +3 -1
- package/src/host-derive.ts +38 -18
- package/src/index.ts +15 -2
- package/src/ledger.ts +42 -2
- package/src/local-sandbox.ts +133 -0
- package/src/op.ts +10 -2
- package/src/paths.ts +22 -4
- package/src/resource.ts +16 -2
- package/src/resources.ts +8 -6
- package/src/runner-box.ts +218 -0
- package/src/runner-protocol.ts +61 -0
- package/src/sandbox-contract.ts +121 -0
- package/src/sandbox-runner.ts +187 -0
- package/src/scenario.ts +16 -6
- package/src/schedules.ts +19 -4
- package/src/schema.ts +14 -3
- package/src/secret.ts +6 -2
- package/src/shared.ts +40 -4
- package/src/sites.ts +11 -7
- package/src/source.ts +14 -0
package/dist/collection.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { z } from "zod";
|
|
|
2
2
|
import type { Db } from "./db.ts";
|
|
3
3
|
import { type Fake } from "./fake.ts";
|
|
4
4
|
import { type Connector, type Driver, type Op, type OpSpec } from "./op.ts";
|
|
5
|
-
import { DATA_VENDOR, type FIELD_TYPES, type ListQuery, type Saved } from "./shared.ts";
|
|
5
|
+
import { DATA_VENDOR, type Deleted, type FIELD_TYPES, type ListQuery, type Saved } from "./shared.ts";
|
|
6
6
|
export type FieldType = (typeof FIELD_TYPES)[number];
|
|
7
7
|
/** A field of a collection: its type, the type marked optional, or one of a list of strings. */
|
|
8
8
|
export type Field = FieldType | {
|
|
@@ -44,7 +44,7 @@ export type RequiredTextKeys<F extends Record<string, Field>> = {
|
|
|
44
44
|
* collection another copy made, as `VENDOR` and `RESOURCE`.
|
|
45
45
|
*/
|
|
46
46
|
export declare const COLLECTION: unique symbol;
|
|
47
|
-
/** A collection, as `collection()` declares it, with its
|
|
47
|
+
/** A collection, as `collection()` declares it, with its six operations. */
|
|
48
48
|
export interface Collection<N extends string = string, F extends Record<string, Field> = Record<string, Field>, K extends string = string> {
|
|
49
49
|
readonly [COLLECTION]: true;
|
|
50
50
|
readonly kind: "collection";
|
|
@@ -59,22 +59,35 @@ export interface Collection<N extends string = string, F extends Record<string,
|
|
|
59
59
|
key: string;
|
|
60
60
|
}, Saved<RecordOf<F>> | null>;
|
|
61
61
|
readonly list: Op<typeof DATA_VENDOR, N, "list", ListQuery<RecordOf<F>>, Saved<RecordOf<F>>[]>;
|
|
62
|
+
readonly count: Op<typeof DATA_VENDOR, N, "count", Pick<ListQuery<RecordOf<F>>, "where">, {
|
|
63
|
+
count: number;
|
|
64
|
+
}>;
|
|
62
65
|
readonly save: Op<typeof DATA_VENDOR, N, "save", {
|
|
63
66
|
record: RecordOf<F>;
|
|
64
67
|
ifAbsent?: boolean;
|
|
65
68
|
ifRecord?: Record<string, unknown>;
|
|
66
69
|
}, Saved<RecordOf<F>>>;
|
|
70
|
+
readonly saveMany: Op<typeof DATA_VENDOR, N, "saveMany", {
|
|
71
|
+
records?: {
|
|
72
|
+
record: RecordOf<F>;
|
|
73
|
+
ifAbsent?: boolean;
|
|
74
|
+
ifRecord?: Record<string, unknown>;
|
|
75
|
+
}[];
|
|
76
|
+
deletes?: {
|
|
77
|
+
key: string;
|
|
78
|
+
ifRecord?: Record<string, unknown>;
|
|
79
|
+
}[];
|
|
80
|
+
}, (Saved<RecordOf<F>> | Deleted)[]>;
|
|
67
81
|
readonly delete: Op<typeof DATA_VENDOR, N, "delete", {
|
|
68
82
|
key: string;
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
}>;
|
|
83
|
+
ifRecord?: Record<string, unknown>;
|
|
84
|
+
}, Deleted>;
|
|
72
85
|
}
|
|
73
86
|
/**
|
|
74
87
|
* Declares a collection of records, in `resources/data.ts`:
|
|
75
88
|
* `collection({ name: "outbound", key: "company", fields: { company: "text", stage: { enum: ["new", "won"] } } })`.
|
|
76
|
-
* Its operations are `data.<name>.get`, `.list`, `.save` and `.delete`,
|
|
77
|
-
* `uses` and calls on `ctx.data.<name>`. The name is a lowercase letter then letters and digits;
|
|
89
|
+
* Its operations are `data.<name>.get`, `.list`, `.count`, `.save`, `.saveMany` and `.delete`,
|
|
90
|
+
* which a workflow names in `uses` and calls on `ctx.data.<name>`. The name is a lowercase letter then letters and digits;
|
|
78
91
|
* the key is a required text field, each record's own and unique. In an app's folder
|
|
79
92
|
* (`apps/<app>/resources/data.ts`) the runtime names it `<app>.<name>`: `data.<app>.<name>.get`,
|
|
80
93
|
* called on `ctx.data.<app>.<name>`.
|
|
@@ -102,6 +115,11 @@ type Stored = Omit<Saved, "issues">;
|
|
|
102
115
|
type DataOps = Record<string, Record<string, OpSpec>>;
|
|
103
116
|
/** The vendor `data` as a connector of the collections' operations, the very ones each `collection()` made. */
|
|
104
117
|
export declare function collectionsConnector(list: readonly Collection[]): Connector<typeof DATA_VENDOR, DataOps>;
|
|
118
|
+
/** An entry of a batch its `ifRecord` refused: its key, and the record as it stands, or `null` when it is gone. */
|
|
119
|
+
export type Conflict = {
|
|
120
|
+
key: string;
|
|
121
|
+
current: Saved | null;
|
|
122
|
+
};
|
|
105
123
|
/**
|
|
106
124
|
* The collections' driver: their records in the `data` table of the database `store` is on, through
|
|
107
125
|
* the pool a run's calls share, or one connection in a transaction (a direct write, with its
|
package/dist/collection.js
CHANGED
|
@@ -3,12 +3,13 @@ import { z } from "zod";
|
|
|
3
3
|
import * as drizzle from "drizzle-orm";
|
|
4
4
|
import { and, eq, or, sql } from "drizzle-orm";
|
|
5
5
|
import { data } from "./db/company.js";
|
|
6
|
+
import { vendorCodeOf } from "./errors.js";
|
|
6
7
|
import { defineFake } from "./fake.js";
|
|
7
8
|
import { isObject } from "./resource.js";
|
|
8
9
|
import { defineConnector, defineDriver, DriverError, } from "./op.js";
|
|
9
10
|
import { callerFile } from "./define.js";
|
|
10
11
|
import { appOfFile } from "./paths.js";
|
|
11
|
-
import { checkCollection, DATA_VENDOR, LIST_LIMIT, qualified, } from "./shared.js";
|
|
12
|
+
import { BATCH, BATCH_LIMIT, checkCollection, DATA_VENDOR, LIST_LIMIT, qualified, } from "./shared.js";
|
|
12
13
|
/**
|
|
13
14
|
* Where a collection keeps its brand: a registered symbol, so a copy of this package reads a
|
|
14
15
|
* collection another copy made, as `VENDOR` and `RESOURCE`.
|
|
@@ -17,8 +18,8 @@ export const COLLECTION = Symbol.for("sanoma.collection");
|
|
|
17
18
|
/**
|
|
18
19
|
* Declares a collection of records, in `resources/data.ts`:
|
|
19
20
|
* `collection({ name: "outbound", key: "company", fields: { company: "text", stage: { enum: ["new", "won"] } } })`.
|
|
20
|
-
* Its operations are `data.<name>.get`, `.list`, `.save` and `.delete`,
|
|
21
|
-
* `uses` and calls on `ctx.data.<name>`. The name is a lowercase letter then letters and digits;
|
|
21
|
+
* Its operations are `data.<name>.get`, `.list`, `.count`, `.save`, `.saveMany` and `.delete`,
|
|
22
|
+
* which a workflow names in `uses` and calls on `ctx.data.<name>`. The name is a lowercase letter then letters and digits;
|
|
22
23
|
* the key is a required text field, each record's own and unique. In an app's folder
|
|
23
24
|
* (`apps/<app>/resources/data.ts`) the runtime names it `<app>.<name>`: `data.<app>.<name>.get`,
|
|
24
25
|
* called on `ctx.data.<app>.<name>`.
|
|
@@ -76,10 +77,20 @@ const SAVED = z.object({
|
|
|
76
77
|
updatedBy: z.string(),
|
|
77
78
|
issues: z.array(z.object({ path: z.array(z.union([z.string(), z.number()])), message: z.string() })).optional(),
|
|
78
79
|
});
|
|
79
|
-
/**
|
|
80
|
+
/** What `delete` answers, and a batch for each of its deletes: whether there was a record to delete. */
|
|
81
|
+
const DELETED = z.object({ key: z.string(), deleted: z.boolean() });
|
|
82
|
+
/** A collection's six operations, for `defineConnector`. */
|
|
80
83
|
function specsOf(name, key, fields, record) {
|
|
81
84
|
const at = (k) => `${DATA_VENDOR}:${name}/${k}`;
|
|
82
|
-
const
|
|
85
|
+
const whole = `${DATA_VENDOR}:${name}`;
|
|
86
|
+
const ifRecord = z.record(z.string(), z.unknown()).optional();
|
|
87
|
+
const byKey = z.object({ key: z.string().min(1), ifRecord });
|
|
88
|
+
/** What `save` takes, and a batch for each of its records. */
|
|
89
|
+
const saving = z
|
|
90
|
+
.object({ record, ifAbsent: z.boolean().optional(), ifRecord })
|
|
91
|
+
.refine((input) => !(input.ifAbsent && input.ifRecord !== undefined), {
|
|
92
|
+
message: "Choose ifAbsent or ifRecord, not both",
|
|
93
|
+
});
|
|
83
94
|
const names = Object.keys(fields);
|
|
84
95
|
const where = z.strictObject(Object.fromEntries(Object.entries(fields).map(([field, kind]) => {
|
|
85
96
|
const value = valueSchema(kind);
|
|
@@ -91,7 +102,7 @@ function specsOf(name, key, fields, record) {
|
|
|
91
102
|
effect: "read",
|
|
92
103
|
idempotent: true,
|
|
93
104
|
description: `Get a record of ${name} by its ${key}`,
|
|
94
|
-
input:
|
|
105
|
+
input: z.object({ key: z.string().min(1) }),
|
|
95
106
|
output: SAVED.nullable(),
|
|
96
107
|
target: ({ key: k }) => at(k),
|
|
97
108
|
},
|
|
@@ -105,26 +116,54 @@ function specsOf(name, key, fields, record) {
|
|
|
105
116
|
limit: z.number().int().min(1).max(LIST_LIMIT.max).default(LIST_LIMIT.default),
|
|
106
117
|
}),
|
|
107
118
|
output: z.array(SAVED),
|
|
108
|
-
target: () =>
|
|
119
|
+
target: () => whole,
|
|
120
|
+
},
|
|
121
|
+
count: {
|
|
122
|
+
effect: "read",
|
|
123
|
+
idempotent: true,
|
|
124
|
+
description: `Count the records of ${name}, or those with fields equal to a value or within a range`,
|
|
125
|
+
input: z.object({ where: where.optional() }),
|
|
126
|
+
output: z.object({ count: z.number().int() }),
|
|
127
|
+
target: () => whole,
|
|
109
128
|
},
|
|
110
129
|
save: {
|
|
111
130
|
effect: "write",
|
|
112
131
|
idempotent: true,
|
|
113
132
|
description: `Save a record of ${name}: added, or replacing the one with its ${key}; ifAbsent refuses a different existing record`,
|
|
114
|
-
input:
|
|
115
|
-
.object({ record, ifAbsent: z.boolean().optional(), ifRecord: z.record(z.string(), z.unknown()).optional() })
|
|
116
|
-
.refine((input) => !(input.ifAbsent && input.ifRecord !== undefined), {
|
|
117
|
-
message: "Choose ifAbsent or ifRecord, not both",
|
|
118
|
-
}),
|
|
133
|
+
input: saving,
|
|
119
134
|
output: SAVED,
|
|
120
135
|
target: ({ record: r }) => at(r[key]),
|
|
121
136
|
},
|
|
137
|
+
[BATCH]: {
|
|
138
|
+
effect: "write",
|
|
139
|
+
idempotent: true,
|
|
140
|
+
description: `Save and delete records of ${name} together, all or none, each entry decided and recorded as its own save or delete`,
|
|
141
|
+
input: z
|
|
142
|
+
.object({
|
|
143
|
+
records: z.array(saving).default([]),
|
|
144
|
+
deletes: z.array(byKey).default([]),
|
|
145
|
+
})
|
|
146
|
+
.superRefine((batch, ctx) => {
|
|
147
|
+
const keys = [
|
|
148
|
+
...batch.records.map((e) => e.record[key]),
|
|
149
|
+
...batch.deletes.map((e) => e.key),
|
|
150
|
+
];
|
|
151
|
+
if (keys.length < 1 || keys.length > BATCH_LIMIT) {
|
|
152
|
+
ctx.addIssue({ code: "custom", message: `A batch has 1 to ${BATCH_LIMIT} entries` });
|
|
153
|
+
}
|
|
154
|
+
if (new Set(keys).size !== keys.length) {
|
|
155
|
+
ctx.addIssue({ code: "custom", message: `A batch names each ${key} once` });
|
|
156
|
+
}
|
|
157
|
+
}),
|
|
158
|
+
output: z.array(z.union([SAVED, DELETED])),
|
|
159
|
+
target: () => whole,
|
|
160
|
+
},
|
|
122
161
|
delete: {
|
|
123
162
|
effect: "write",
|
|
124
163
|
idempotent: true,
|
|
125
|
-
description: `Delete the record of ${name} with this ${key}`,
|
|
164
|
+
description: `Delete the record of ${name} with this ${key}; ifRecord refuses a changed or missing one`,
|
|
126
165
|
input: byKey,
|
|
127
|
-
output:
|
|
166
|
+
output: DELETED,
|
|
128
167
|
target: ({ key: k }) => at(k),
|
|
129
168
|
},
|
|
130
169
|
};
|
|
@@ -152,16 +191,34 @@ function answer(c, stored) {
|
|
|
152
191
|
const updatedBy = (call) => call.by ?? `run:${call.runId}`;
|
|
153
192
|
/** The vendor `data` as a connector of the collections' operations, the very ones each `collection()` made. */
|
|
154
193
|
export function collectionsConnector(list) {
|
|
155
|
-
const ops = list.map((c) => [
|
|
194
|
+
const ops = list.map((c) => [
|
|
195
|
+
c.name,
|
|
196
|
+
{ get: c.get, list: c.list, count: c.count, save: c.save, [BATCH]: c.saveMany, delete: c.delete },
|
|
197
|
+
]);
|
|
156
198
|
return { ...defineConnector(DATA_VENDOR, {}), ...Object.fromEntries(ops) };
|
|
157
199
|
}
|
|
158
200
|
const COLUMNS = { key: data.key, record: data.record, updatedAt: data.updatedAt, updatedBy: data.updatedBy };
|
|
159
|
-
|
|
160
|
-
const
|
|
201
|
+
/** The refusal of an `ifAbsent` save, carrying the record that is there (`current`). */
|
|
202
|
+
const recordExists = (current) => Object.assign(new DriverError("Collection record already exists", { retryable: false, status: 409, vendorCode: "record_exists" }), { current });
|
|
203
|
+
/** The refusal of an `ifRecord` save or delete, carrying the record as it stands (`current`), or `null` when it is gone. */
|
|
204
|
+
const recordChanged = (current) => Object.assign(new DriverError(current ? "Collection record changed" : "Collection record is missing", {
|
|
161
205
|
retryable: false,
|
|
162
206
|
status: 409,
|
|
163
207
|
vendorCode: "record_changed",
|
|
164
|
-
});
|
|
208
|
+
}), { current });
|
|
209
|
+
/** The refusal of a batch, carrying every entry refused (`conflicts`), with the record as each stands. */
|
|
210
|
+
const recordsChanged = (conflicts) => Object.assign(new DriverError(`${conflicts.length} of the batch's records changed or are missing`, {
|
|
211
|
+
retryable: false,
|
|
212
|
+
status: 409,
|
|
213
|
+
vendorCode: "record_changed",
|
|
214
|
+
}), { conflicts });
|
|
215
|
+
/** The refusal of one entry (its `ifRecord` or `ifAbsent`), as a batch collects it; any other failure is the batch's. */
|
|
216
|
+
const conflictOf = (key, err) => {
|
|
217
|
+
const code = vendorCodeOf(err);
|
|
218
|
+
if (code !== "record_changed" && code !== "record_exists")
|
|
219
|
+
throw err;
|
|
220
|
+
return { key, current: err.current };
|
|
221
|
+
};
|
|
165
222
|
const sameJson = (a, b) => isDeepStrictEqual(JSON.parse(JSON.stringify(a)), JSON.parse(JSON.stringify(b)));
|
|
166
223
|
// By namespace: the fake names a range's bounds `gt`, `gte`, `lt` and `lte`.
|
|
167
224
|
const RANGE = { gt: drizzle.gt, gte: drizzle.gte, lt: drizzle.lt, lte: drizzle.lte };
|
|
@@ -180,11 +237,62 @@ export function collectionsDriver(list, store) {
|
|
|
180
237
|
updatedBy: row.updatedBy,
|
|
181
238
|
});
|
|
182
239
|
const here = (key) => and(eq(data.collection, c.name), eq(data.key, key));
|
|
240
|
+
/** The record on `db`, as `get` answers it and a refused save or delete carries it (`current`). */
|
|
241
|
+
const getOn = async (db, key) => {
|
|
242
|
+
const [row] = await db.select(COLUMNS).from(data).where(here(key));
|
|
243
|
+
return row ? saved(row) : null;
|
|
244
|
+
};
|
|
245
|
+
/** One save on `db`, as `save` makes it and a batch makes each of its records. */
|
|
246
|
+
const saveOn = async (db, { record, ifAbsent, ifRecord }, by) => {
|
|
247
|
+
const key = record[c.key];
|
|
248
|
+
if (ifRecord !== undefined) {
|
|
249
|
+
// PostgreSQL locks and rechecks the predicate on a concurrent update. A lost-response
|
|
250
|
+
// retry may recover its own identical result, but never overwrite another actor's state.
|
|
251
|
+
const retry = and(eq(data.record, record), eq(data.updatedBy, by));
|
|
252
|
+
const [row] = await db
|
|
253
|
+
.update(data)
|
|
254
|
+
.set({ record, updatedAt: sql `CASE WHEN ${retry} THEN ${data.updatedAt} ELSE now() END`, updatedBy: by })
|
|
255
|
+
.where(and(here(key), or(eq(data.record, ifRecord), retry)))
|
|
256
|
+
.returning(COLUMNS);
|
|
257
|
+
if (row)
|
|
258
|
+
return saved(row);
|
|
259
|
+
throw recordChanged(await getOn(db, key));
|
|
260
|
+
}
|
|
261
|
+
// The conflict row is locked by Postgres: never implement an insert-only claim as get + save.
|
|
262
|
+
// An identical retry by the same actor keeps the first receipt and never overwrites later progress.
|
|
263
|
+
const conflict = ifAbsent
|
|
264
|
+
? { set: { record: sql `${data.record}` }, setWhere: and(eq(data.record, record), eq(data.updatedBy, by)) }
|
|
265
|
+
: { set: { record, updatedAt: sql `now()`, updatedBy: by } };
|
|
266
|
+
const [row] = await db
|
|
267
|
+
.insert(data)
|
|
268
|
+
.values({ collection: c.name, key, record, updatedBy: by })
|
|
269
|
+
.onConflictDoUpdate({ target: [data.collection, data.key], ...conflict })
|
|
270
|
+
.returning(COLUMNS);
|
|
271
|
+
if (row)
|
|
272
|
+
return saved(row);
|
|
273
|
+
const current = await getOn(db, key);
|
|
274
|
+
// Gone between the refusal and this read: what refused it was a record, so it has changed since.
|
|
275
|
+
throw current ? recordExists(current) : recordChanged(null);
|
|
276
|
+
};
|
|
277
|
+
/**
|
|
278
|
+
* One delete on `db`, as `delete` makes it and a batch makes each of its deletes. A retry
|
|
279
|
+
* (`attempt` past the first) that finds no record under `ifRecord` deleted it the first time,
|
|
280
|
+
* and its answer was lost: nothing is left to recover a receipt from, so it is deleted.
|
|
281
|
+
*/
|
|
282
|
+
const deleteOn = async (db, { key, ifRecord }, retrying) => {
|
|
283
|
+
const gone = await db
|
|
284
|
+
.delete(data)
|
|
285
|
+
.where(ifRecord === undefined ? here(key) : and(here(key), eq(data.record, ifRecord)))
|
|
286
|
+
.returning({ key: data.key });
|
|
287
|
+
if (gone.length || ifRecord === undefined)
|
|
288
|
+
return { key, deleted: gone.length > 0 };
|
|
289
|
+
const current = await getOn(db, key);
|
|
290
|
+
if (current === null && retrying)
|
|
291
|
+
return { key, deleted: true };
|
|
292
|
+
throw recordChanged(current);
|
|
293
|
+
};
|
|
183
294
|
const ops = {
|
|
184
|
-
get: async ({ key }) =>
|
|
185
|
-
const [row] = await (await store.db()).select(COLUMNS).from(data).where(here(key));
|
|
186
|
-
return row ? saved(row) : null;
|
|
187
|
-
},
|
|
295
|
+
get: async ({ key }) => getOn(await store.db(), key),
|
|
188
296
|
list: async (listing) => {
|
|
189
297
|
const { where, order } = listClauses(c, listing);
|
|
190
298
|
const rows = await (await store.db())
|
|
@@ -195,41 +303,36 @@ export function collectionsDriver(list, store) {
|
|
|
195
303
|
.limit(listing.limit);
|
|
196
304
|
return rows.map(saved);
|
|
197
305
|
},
|
|
198
|
-
|
|
199
|
-
const
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
// retry may recover its own identical result, but never overwrite another actor's state.
|
|
205
|
-
const retry = and(eq(data.record, record), eq(data.updatedBy, by));
|
|
206
|
-
const [row] = await db
|
|
207
|
-
.update(data)
|
|
208
|
-
.set({ record, updatedAt: sql `CASE WHEN ${retry} THEN ${data.updatedAt} ELSE now() END`, updatedBy: by })
|
|
209
|
-
.where(and(here(key), or(eq(data.record, ifRecord), retry)))
|
|
210
|
-
.returning(COLUMNS);
|
|
211
|
-
if (!row)
|
|
212
|
-
throw recordChanged();
|
|
213
|
-
return saved(row);
|
|
214
|
-
}
|
|
215
|
-
// The conflict row is locked by Postgres: never implement an insert-only claim as get + save.
|
|
216
|
-
// An identical retry by the same actor keeps the first receipt and never overwrites later progress.
|
|
217
|
-
const conflict = ifAbsent
|
|
218
|
-
? { set: { record: sql `${data.record}` }, setWhere: and(eq(data.record, record), eq(data.updatedBy, by)) }
|
|
219
|
-
: { set: { record, updatedAt: sql `now()`, updatedBy: by } };
|
|
220
|
-
const [row] = await db
|
|
221
|
-
.insert(data)
|
|
222
|
-
.values({ collection: c.name, key, record, updatedBy: by })
|
|
223
|
-
.onConflictDoUpdate({ target: [data.collection, data.key], ...conflict })
|
|
224
|
-
.returning(COLUMNS);
|
|
225
|
-
if (!row)
|
|
226
|
-
throw recordExists();
|
|
227
|
-
return saved(row);
|
|
228
|
-
},
|
|
229
|
-
delete: async ({ key }) => {
|
|
230
|
-
const gone = await (await store.db()).delete(data).where(here(key)).returning({ key: data.key });
|
|
231
|
-
return { deleted: gone.length > 0 };
|
|
306
|
+
count: async (counting) => {
|
|
307
|
+
const [row] = await (await store.db())
|
|
308
|
+
.select({ count: drizzle.count() })
|
|
309
|
+
.from(data)
|
|
310
|
+
.where(listClauses(c, counting).where);
|
|
311
|
+
return { count: row.count };
|
|
232
312
|
},
|
|
313
|
+
save: async (input, call) => saveOn(await store.db(), input, updatedBy(call)),
|
|
314
|
+
// One transaction: a conflict on any entry, collected so each is answered, rolls back them all.
|
|
315
|
+
[BATCH]: async ({ records, deletes }, call) => (await store.db()).transaction(async (tx) => {
|
|
316
|
+
const by = updatedBy(call);
|
|
317
|
+
const results = [];
|
|
318
|
+
const conflicts = [];
|
|
319
|
+
const made = async (key, entry) => {
|
|
320
|
+
try {
|
|
321
|
+
results.push(await entry);
|
|
322
|
+
}
|
|
323
|
+
catch (err) {
|
|
324
|
+
conflicts.push(conflictOf(key, err));
|
|
325
|
+
}
|
|
326
|
+
};
|
|
327
|
+
for (const e of records)
|
|
328
|
+
await made(e.record[c.key], saveOn(tx, e, by));
|
|
329
|
+
for (const e of deletes)
|
|
330
|
+
await made(e.key, deleteOn(tx, e, call.attempt > 1));
|
|
331
|
+
if (conflicts.length)
|
|
332
|
+
throw recordsChanged(conflicts);
|
|
333
|
+
return results;
|
|
334
|
+
}),
|
|
335
|
+
delete: async (input, call) => deleteOn(await store.db(), input, call.attempt > 1),
|
|
233
336
|
};
|
|
234
337
|
return [c.name, ops];
|
|
235
338
|
});
|
|
@@ -330,45 +433,87 @@ export function collectionsFake(list) {
|
|
|
330
433
|
const records = () => state[c.name];
|
|
331
434
|
const types = jsonTypesOf(c);
|
|
332
435
|
const saved = (stored) => answer(c, structuredClone(stored));
|
|
436
|
+
const stored = (key) => (Object.hasOwn(records(), key) ? records()[key] : undefined);
|
|
437
|
+
const matching = (where = {}) => Object.values(records()).filter((s) => matches(s.record, where, types));
|
|
438
|
+
const save = ({ record, ifAbsent, ifRecord }, by) => {
|
|
439
|
+
const key = record[c.key];
|
|
440
|
+
const previous = stored(key);
|
|
441
|
+
if (ifRecord !== undefined) {
|
|
442
|
+
if (!previous)
|
|
443
|
+
throw recordChanged(null);
|
|
444
|
+
if (previous.updatedBy === by && sameJson(previous.record, record))
|
|
445
|
+
return saved(previous);
|
|
446
|
+
if (!sameJson(previous.record, ifRecord))
|
|
447
|
+
throw recordChanged(saved(previous));
|
|
448
|
+
}
|
|
449
|
+
if (ifAbsent && previous) {
|
|
450
|
+
// Postgres jsonb ignores property order and omitted undefined fields.
|
|
451
|
+
if (previous.updatedBy !== by || !sameJson(previous.record, record))
|
|
452
|
+
throw recordExists(saved(previous));
|
|
453
|
+
return saved(previous);
|
|
454
|
+
}
|
|
455
|
+
const next = { key, record: structuredClone(record), updatedAt: new Date().toISOString(), updatedBy: by };
|
|
456
|
+
records()[key] = next;
|
|
457
|
+
return saved(next);
|
|
458
|
+
};
|
|
459
|
+
const remove = ({ key, ifRecord }, retrying) => {
|
|
460
|
+
const previous = stored(key);
|
|
461
|
+
if (ifRecord !== undefined && !(previous && sameJson(previous.record, ifRecord))) {
|
|
462
|
+
// As the driver: a retry finding no record deleted it the first time.
|
|
463
|
+
if (!previous && retrying)
|
|
464
|
+
return { key, deleted: true };
|
|
465
|
+
throw recordChanged(previous ? saved(previous) : null);
|
|
466
|
+
}
|
|
467
|
+
delete records()[key];
|
|
468
|
+
return { key, deleted: previous !== undefined };
|
|
469
|
+
};
|
|
333
470
|
const ops = {
|
|
334
|
-
get: async ({ key }) =>
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
save: async (
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
471
|
+
get: async ({ key }) => {
|
|
472
|
+
const s = stored(key);
|
|
473
|
+
return s ? saved(s) : null;
|
|
474
|
+
},
|
|
475
|
+
list: async ({ where, order, limit }) => matching(where).toSorted(byOrder(order, types)).slice(0, limit).map(saved),
|
|
476
|
+
count: async ({ where }) => ({ count: matching(where).length }),
|
|
477
|
+
save: async (input, call) => save(input, updatedBy(call)),
|
|
478
|
+
// All or none, as the driver's transaction: a failure puts back every entry made before it.
|
|
479
|
+
[BATCH]: async ({ records: saves, deletes }, call) => {
|
|
480
|
+
const by = updatedBy(call);
|
|
481
|
+
const results = [];
|
|
482
|
+
const conflicts = [];
|
|
483
|
+
const before = new Map();
|
|
484
|
+
const restore = () => {
|
|
485
|
+
for (const [key, previous] of before) {
|
|
486
|
+
if (previous)
|
|
487
|
+
records()[key] = previous;
|
|
488
|
+
else
|
|
489
|
+
delete records()[key];
|
|
490
|
+
}
|
|
491
|
+
};
|
|
492
|
+
const made = (key, entry) => {
|
|
493
|
+
before.set(key, stored(key));
|
|
494
|
+
try {
|
|
495
|
+
results.push(entry());
|
|
496
|
+
}
|
|
497
|
+
catch (err) {
|
|
498
|
+
conflicts.push(conflictOf(key, err));
|
|
499
|
+
}
|
|
500
|
+
};
|
|
501
|
+
try {
|
|
502
|
+
for (const e of saves)
|
|
503
|
+
made(e.record[c.key], () => save(e, by));
|
|
504
|
+
for (const e of deletes)
|
|
505
|
+
made(e.key, () => remove(e, call.attempt > 1));
|
|
350
506
|
}
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
if (previous.updatedBy !== updatedBy(call) || !sameJson(previous.record, record))
|
|
355
|
-
throw recordExists();
|
|
356
|
-
return saved(previous);
|
|
507
|
+
catch (err) {
|
|
508
|
+
restore();
|
|
509
|
+
throw err;
|
|
357
510
|
}
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
updatedBy: updatedBy(call),
|
|
363
|
-
};
|
|
364
|
-
records()[key] = stored;
|
|
365
|
-
return saved(stored);
|
|
366
|
-
},
|
|
367
|
-
delete: async ({ key }) => {
|
|
368
|
-
const had = Object.hasOwn(records(), key);
|
|
369
|
-
delete records()[key];
|
|
370
|
-
return { deleted: had };
|
|
511
|
+
if (!conflicts.length)
|
|
512
|
+
return results;
|
|
513
|
+
restore();
|
|
514
|
+
throw recordsChanged(conflicts);
|
|
371
515
|
},
|
|
516
|
+
delete: async (input, call) => remove(input, call.attempt > 1),
|
|
372
517
|
};
|
|
373
518
|
return [c.name, ops];
|
|
374
519
|
})),
|
package/dist/collection.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection.js","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"collection.js","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"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"}
|