@spine-event-engine/storage-postgres 2.0.0-snapshot.23 → 2.0.0-snapshot.25

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.
Files changed (53) hide show
  1. package/README.md +34 -16
  2. package/REFERENCE.md +66 -26
  3. package/dist/index.d.ts +1 -1
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js.map +1 -1
  6. package/dist/postgres/agent-history.d.ts +60 -18
  7. package/dist/postgres/agent-history.d.ts.map +1 -1
  8. package/dist/postgres/agent-history.js +114 -37
  9. package/dist/postgres/agent-history.js.map +1 -1
  10. package/dist/postgres/column-mapping.d.ts.map +1 -1
  11. package/dist/postgres/column-mapping.js +6 -3
  12. package/dist/postgres/column-mapping.js.map +1 -1
  13. package/dist/postgres/entity-commit.d.ts +90 -56
  14. package/dist/postgres/entity-commit.d.ts.map +1 -1
  15. package/dist/postgres/entity-commit.js +439 -188
  16. package/dist/postgres/entity-commit.js.map +1 -1
  17. package/dist/postgres/entity-history.d.ts +4 -2
  18. package/dist/postgres/entity-history.d.ts.map +1 -1
  19. package/dist/postgres/entity-history.js +163 -262
  20. package/dist/postgres/entity-history.js.map +1 -1
  21. package/dist/postgres/errors.d.ts +1 -1
  22. package/dist/postgres/errors.d.ts.map +1 -1
  23. package/dist/postgres/errors.js +5 -3
  24. package/dist/postgres/errors.js.map +1 -1
  25. package/dist/postgres/id-column.d.ts.map +1 -1
  26. package/dist/postgres/id-column.js +6 -3
  27. package/dist/postgres/id-column.js.map +1 -1
  28. package/dist/postgres/record-storage.d.ts +228 -117
  29. package/dist/postgres/record-storage.d.ts.map +1 -1
  30. package/dist/postgres/record-storage.js +350 -204
  31. package/dist/postgres/record-storage.js.map +1 -1
  32. package/dist/postgres/storage-factory.d.ts +267 -30
  33. package/dist/postgres/storage-factory.d.ts.map +1 -1
  34. package/dist/postgres/storage-factory.js +786 -145
  35. package/dist/postgres/storage-factory.js.map +1 -1
  36. package/dist/postgres/table-initializer.d.ts +7 -4
  37. package/dist/postgres/table-initializer.d.ts.map +1 -1
  38. package/dist/postgres/table-initializer.js +21 -15
  39. package/dist/postgres/table-initializer.js.map +1 -1
  40. package/dist/postgres/table-resolver.d.ts +15 -1
  41. package/dist/postgres/table-resolver.d.ts.map +1 -1
  42. package/dist/postgres/table-resolver.js +36 -7
  43. package/dist/postgres/table-resolver.js.map +1 -1
  44. package/dist/tsconfig.tsbuildinfo +1 -1
  45. package/package.json +5 -5
  46. package/dist/postgres/agent-execution.d.ts +0 -284
  47. package/dist/postgres/agent-execution.d.ts.map +0 -1
  48. package/dist/postgres/agent-execution.js +0 -648
  49. package/dist/postgres/agent-execution.js.map +0 -1
  50. package/dist/postgres/delivery-cleanup.d.ts +0 -76
  51. package/dist/postgres/delivery-cleanup.d.ts.map +0 -1
  52. package/dist/postgres/delivery-cleanup.js +0 -224
  53. package/dist/postgres/delivery-cleanup.js.map +0 -1
@@ -1,13 +1,49 @@
1
1
  import { type Message } from "@bufbuild/protobuf";
2
2
  import { StringifierRegistry } from "@spine-event-engine/core";
3
- import { RecordStorage, type NormalizedQueryPlan, type RecordEntry, type RecordQuery, type RecordSpec, type StorageContext, type StorageQueryCapabilities } from "@spine-event-engine/storage";
3
+ import { RecordQuery, RecordStorage, type NormalizedQueryPlan, type RecordEntry, type RecordSpec, type StorageContext, type StorageQueryCapabilities } from "@spine-event-engine/storage";
4
4
  import type { PoolClient } from "pg";
5
5
  import type { PostgresParameter } from "./parameter.js";
6
6
  import type { PostgresTableSpec } from "./storage-factory.js";
7
+ /**
8
+ * Admits one complete public provider operation before application callbacks run.
9
+ * @internal
10
+ * @typeParam T The operation result.
11
+ * @param work The admitted operation.
12
+ * @returns The operation outcome.
13
+ */
14
+ export type OnPublicOperation = <T>(work: () => Promise<T>) => Promise<T>;
7
15
  /**
8
16
  * Manages PostgreSQL clients for one record-family handle.
9
17
  */
10
18
  export interface PostgresRecordLifecycle {
19
+ /**
20
+ * Resolves the selected database and its server-selected schema.
21
+ *
22
+ * @returns Completion after binding.
23
+ */
24
+ resolve(): Promise<void>;
25
+ /**
26
+ * Prepares factory-shared physical readiness for the resolved table.
27
+ *
28
+ * @param table The canonical physical table definition.
29
+ * @param customCreate Optional custom create SQL producer.
30
+ * @returns Completion after creation or remembered compatible readiness.
31
+ */
32
+ prepare(table: PostgresTableSpec<unknown, never>, customCreate?: () => string): Promise<void>;
33
+ /**
34
+ * Records one admitted asynchronous operation through factory close.
35
+ *
36
+ * @typeParam T The operation result.
37
+ * @param work The admitted operation promise.
38
+ * @returns The same operation outcome.
39
+ */
40
+ track<T>(work: Promise<T>): Promise<T>;
41
+ /**
42
+ * Checks the factory fence for public record operations.
43
+ *
44
+ * @returns Whether a new public operation may start.
45
+ */
46
+ publicOpen(): boolean;
11
47
  /**
12
48
  * Names the selected database for advisory coordination.
13
49
  */
@@ -27,9 +63,9 @@ export interface PostgresRecordLifecycle {
27
63
  * Performs package-local bounded operations for one PostgreSQL record family.
28
64
  *
29
65
  * This capability deliberately stays outside the package root: Entity history
30
- * uses it to keep its SQL and transaction scope on the PostgreSQL provider.
66
+ * uses it to keep its SQL on the PostgreSQL provider.
31
67
  *
32
- * @typeParam I The storage identifier type.
68
+ * @typeParam I Record identifier type.
33
69
  * @typeParam R The stored Protobuf record type.
34
70
  */
35
71
  export interface PostgresRecordExecutor<I, R extends Message> {
@@ -39,60 +75,57 @@ export interface PostgresRecordExecutor<I, R extends Message> {
39
75
  */
40
76
  prepare(): Promise<void>;
41
77
  /**
42
- * Returns one PostgreSQL transaction with rollback and client release.
78
+ * Executes Agent record mutations on one rollback-capable transaction client.
43
79
  *
44
- * @typeParam T The value returned by the transaction work.
45
- * @param work Performs work with the transaction client.
46
- * @returns The work result.
80
+ * @typeParam T Result of the transaction work.
81
+ * @param work Operations to run on the transaction client.
82
+ * @returns Result after transaction commit.
47
83
  */
48
84
  transaction<T>(work: (client: PoolClient) => Promise<T>): Promise<T>;
49
85
  /**
50
- * Returns bounded work on one acquired PostgreSQL client.
86
+ * Reads a record on the Agent transaction client.
51
87
  *
52
- * @typeParam T The value returned by the client work.
53
- * @param work Performs work with the acquired client.
54
- * @returns The work result.
55
- */
56
- using<T>(work: (client: PoolClient) => Promise<T>): Promise<T>;
57
- /**
58
- * Reads one record on a caller-managed client.
59
- * @param client Provides the transaction client.
60
- * @param id Identifies the stored record.
61
- * @param lock Requests a row lock when present.
62
- * @returns The decoded record, when present.
88
+ * @param client Active transaction client.
89
+ * @param id Typed record ID.
90
+ * @param lock Whether to lock the selected row.
91
+ * @returns Stored record when present.
63
92
  */
64
93
  read(client: PoolClient, id: I, lock?: "for-update"): Promise<R | undefined>;
65
94
  /**
66
- * Checks that an immutable record is absent or byte-identical.
67
- * @param client Provides the transaction client.
68
- * @param record Provides the immutable record to inspect.
69
- * @returns A promise that rejects for a conflicting payload.
70
- */
71
- assertImmutable(client: PoolClient, record: R): Promise<void>;
72
- /**
73
- * Stores an immutable record on a caller-managed transaction client.
74
- * @param client Provides the transaction client.
75
- * @param record Provides the record to store.
76
- * @returns A promise that resolves after storage or identity confirmation.
95
+ * Writes an immutable record on the Agent transaction client.
96
+ *
97
+ * @param client Active transaction client.
98
+ * @param record Immutable record to append.
99
+ * @returns Completion after insertion or identical retry.
77
100
  */
78
101
  appendImmutable(client: PoolClient, record: R): Promise<void>;
79
102
  /**
80
- * Writes one mutable record on a caller-managed transaction client.
81
- * @param client Provides the transaction client.
82
- * @param record Provides the record to write.
83
- * @returns A promise that resolves after the upsert.
103
+ * Writes a record on the Agent transaction client.
104
+ *
105
+ * @param client Active transaction client.
106
+ * @param record Record to write.
107
+ * @returns Completion after the write.
84
108
  */
85
109
  write(client: PoolClient, record: R): Promise<void>;
86
110
  /**
87
- * Deletes one record on a caller-managed transaction client.
88
- * @param client Provides the transaction client.
89
- * @param id Identifies the stored record.
90
- * @returns Whether PostgreSQL deleted the record.
111
+ * Calculates an Agent transaction lock identity.
112
+ *
113
+ * @param domain Lock namespace within the provider.
114
+ * @param identity Components of the lock identity.
115
+ * @returns Stable advisory lock key.
91
116
  */
92
- delete(client: PoolClient, id: I): Promise<boolean>;
117
+ lock(domain: string, ...identity: readonly string[]): bigint;
118
+ /**
119
+ * Returns bounded work on one acquired PostgreSQL client.
120
+ *
121
+ * @typeParam T The value returned by the client work.
122
+ * @param work Performs work with the acquired client.
123
+ * @returns The work result.
124
+ */
125
+ using<T>(work: (client: PoolClient) => Promise<T>): Promise<T>;
93
126
  /**
94
127
  * Decodes records returned by one bounded PostgreSQL statement.
95
- * @param client Provides the transaction client.
128
+ * @param client Provides the acquired client.
96
129
  * @param sql Supplies bounded provider SQL.
97
130
  * @param values Supplies bound SQL values.
98
131
  * @returns Decoded records.
@@ -110,19 +143,6 @@ export interface PostgresRecordExecutor<I, R extends Message> {
110
143
  * @returns The validated table identifier.
111
144
  */
112
145
  table(): string;
113
- /**
114
- * Returns a hash for one provider-private advisory-lock identity.
115
- * @param domain Separates lock kinds.
116
- * @param identity Identifies the locked resource.
117
- * @returns A signed PostgreSQL advisory key.
118
- */
119
- lock(domain: string, ...identity: readonly string[]): bigint;
120
- /**
121
- * Returns the same record-mutation lock used by compare-and-set.
122
- * @param id Identifies the guarded record.
123
- * @returns A signed PostgreSQL advisory key.
124
- */
125
- lockRecord(id: I): bigint;
126
146
  }
127
147
  /**
128
148
  * Stores one record family in one qualified PostgreSQL table.
@@ -132,11 +152,13 @@ export interface PostgresRecordExecutor<I, R extends Message> {
132
152
  */
133
153
  export declare class PostgresRecordStorage<I, R extends Message> extends RecordStorage<I, R> {
134
154
  #private;
135
- private readonly table;
155
+ private readonly tableNameValue;
156
+ private readonly onSchema;
136
157
  private readonly lifecycle;
137
158
  private readonly onClose;
159
+ private readonly create?;
138
160
  /**
139
- * Reports that compare-and-set uses PostgreSQL transaction coordination.
161
+ * Reports that compare-and-set uses a conditional SQL mutation.
140
162
  */
141
163
  readonly atomicCompareAndSet = true;
142
164
  /**
@@ -144,13 +166,20 @@ export declare class PostgresRecordStorage<I, R extends Message> extends RecordS
144
166
  *
145
167
  * @param context Identifies the storage boundary for this handle.
146
168
  * @param spec Defines the record type, ID type, and declared columns.
147
- * @param table Supplies the resolved physical table layout.
169
+ * @param tableNameValue Supplies the locally resolved physical table name.
170
+ * @param onSchema Builds the physical layout after schema resolution.
148
171
  * @param lifecycle Acquires clients for the selected database and schema.
149
172
  * @param onClose Removes this handle from the factory's live set.
150
173
  * @param create Optionally supplies custom create-table SQL.
151
174
  * @param stringifiers Converts message IDs and columns reversibly.
152
175
  */
153
- constructor(context: StorageContext, spec: RecordSpec<I, R>, table: PostgresTableSpec<I, R>, lifecycle: PostgresRecordLifecycle, onClose: () => void, create?: () => string, stringifiers?: StringifierRegistry);
176
+ constructor(context: StorageContext, spec: RecordSpec<I, R>, tableNameValue: string, onSchema: (schema: string) => PostgresTableSpec<I, R>, lifecycle: PostgresRecordLifecycle, onClose: () => void, create?: ((table: PostgresTableSpec<I, R>) => string) | undefined, stringifiers?: StringifierRegistry);
177
+ /**
178
+ * Returns the bound layout after preparation.
179
+ *
180
+ * @returns The resolved physical layout.
181
+ */
182
+ private get table();
154
183
  /**
155
184
  * Returns the resolved physical table name.
156
185
  *
@@ -158,11 +187,29 @@ export declare class PostgresRecordStorage<I, R extends Message> extends RecordS
158
187
  */
159
188
  get tableName(): string;
160
189
  /**
161
- * Prepares this table before an external coordinator transaction.
190
+ * Prepares this table before a record operation.
162
191
  *
163
192
  * @returns A promise that resolves after compatible initialization.
164
193
  */
165
194
  prepare(): Promise<void>;
195
+ /**
196
+ * Prepares an already admitted operation, including after the factory fence.
197
+ *
198
+ * @returns Completion after table preparation.
199
+ */
200
+ private prepareInternal;
201
+ /**
202
+ * Binds the destination and prepares its physical table.
203
+ *
204
+ * @returns Completion after physical table preparation.
205
+ */
206
+ private prepareBound;
207
+ /**
208
+ * Resolves the database before constructing the schema-bound initializer.
209
+ *
210
+ * @returns Completion after the initializer is available.
211
+ */
212
+ private bind;
166
213
  /**
167
214
  * Opens package-local bounded history operations for this record family.
168
215
  *
@@ -174,6 +221,64 @@ export declare class PostgresRecordStorage<I, R extends Message> extends RecordS
174
221
  * Closes this handle and unregisters it from the factory.
175
222
  */
176
223
  close(): void;
224
+ /**
225
+ * Registers a complete public operation before invoking record callbacks.
226
+ *
227
+ * @typeParam T The operation result.
228
+ * @param work Performs the public record operation.
229
+ * @returns The complete admitted outcome.
230
+ */
231
+ private admit;
232
+ /**
233
+ * Deletes one public record under the factory admission fence.
234
+ * @inheritdoc
235
+ */
236
+ delete(id: I): Promise<boolean>;
237
+ /**
238
+ * Reads one public record under the factory admission fence.
239
+ * @inheritdoc
240
+ */
241
+ read(id: I): Promise<R | undefined>;
242
+ /**
243
+ * Indexes public records under the factory admission fence.
244
+ * @inheritdoc
245
+ */
246
+ index(query?: RecordQuery<I>): Promise<readonly I[]>;
247
+ /**
248
+ * Queries public records under the factory admission fence.
249
+ * @inheritdoc
250
+ */
251
+ query(query?: RecordQuery<I>): Promise<readonly R[]>;
252
+ /**
253
+ * Queries public record entries under the factory admission fence.
254
+ * @inheritdoc
255
+ */
256
+ queryEntries(query?: RecordQuery<I>): Promise<readonly RecordEntry<I, R>[]>;
257
+ /**
258
+ * Queries a normalized plan under the factory admission fence.
259
+ * @inheritdoc
260
+ */
261
+ queryPlan(plan: NormalizedQueryPlan<I>): Promise<readonly R[]>;
262
+ /**
263
+ * Queries normalized entries under the factory admission fence.
264
+ * @inheritdoc
265
+ */
266
+ queryPlanEntries(plan: NormalizedQueryPlan<I>): Promise<readonly RecordEntry<I, R>[]>;
267
+ /**
268
+ * Writes a public record under the factory admission fence.
269
+ * @inheritdoc
270
+ */
271
+ write(record: R): Promise<void>;
272
+ /**
273
+ * Compares and sets a public record under the factory admission fence.
274
+ * @inheritdoc
275
+ */
276
+ compareAndSet(id: I, expected: R | undefined, next: R | undefined): Promise<boolean>;
277
+ /**
278
+ * Writes a public batch under the factory admission fence.
279
+ * @inheritdoc
280
+ */
281
+ writeAll(records: Iterable<R>): Promise<void>;
177
282
  /**
178
283
  * Writes an immutable record or confirms an identical existing payload.
179
284
  *
@@ -223,19 +328,25 @@ export declare class PostgresRecordStorage<I, R extends Message> extends RecordS
223
328
  */
224
329
  protected queryPlanRecordEntries(plan: NormalizedQueryPlan<I>): Promise<readonly RecordEntry<I, R>[]>;
225
330
  /**
226
- * Compares and atomically applies one mutation with bounded retry.
331
+ * Checks plan columns and bind count before connecting to PostgreSQL.
332
+ *
333
+ * @param plan The normalized query definition.
334
+ */
335
+ private validatePlan;
336
+ /**
337
+ * Compares and conditionally mutates one row with a raw-byte SQL guard.
227
338
  *
228
- * @param id Identifies the record guarded by the transaction advisory lock.
339
+ * @param id Identifies the record slot.
229
340
  * @param expected Specifies the current materialized record required to write.
230
341
  * @param next Specifies the replacement record, or absence for deletion.
231
342
  * @returns Whether the current stored payload matched the expected payload.
232
343
  */
233
344
  protected compareAndSetRecord(id: I, expected: Materialized<I, R> | undefined, next: Materialized<I, R> | undefined): Promise<boolean>;
234
345
  /**
235
- * Writes all supplied materialized records in source order and one transaction.
346
+ * Writes all supplied materialized records independently in source order.
236
347
  *
237
348
  * @param records Provides the materialized records to write.
238
- * @returns A promise that resolves after the transaction commits.
349
+ * @returns A promise that resolves after all writes complete.
239
350
  */
240
351
  protected writeAllRecords(records: readonly Materialized<I, R>[]): Promise<void>;
241
352
  /**
@@ -246,22 +357,33 @@ export declare class PostgresRecordStorage<I, R extends Message> extends RecordS
246
357
  */
247
358
  protected writeRecord(record: Materialized<I, R>): Promise<void>;
248
359
  /**
249
- * Applies one compare-and-set attempt inside a transaction.
360
+ * Applies one compare-and-set attempt using a conditional statement.
250
361
  *
362
+ * @param client Provides the operation client.
251
363
  * @param id Identifies the guarded record.
252
364
  * @param expected Supplies the required current materialization.
253
365
  * @param next Supplies the replacement or requests deletion when absent.
254
- * @returns Whether the current record matched the expected record.
366
+ * @returns Whether the current record matched, or undefined after a guard miss.
255
367
  */
256
368
  private casOnce;
257
369
  /**
258
- * Executes work in one transaction and always releases its client.
259
- *
260
- * @typeParam T The value returned by the transaction work.
261
- * @param work Performs the transaction work.
262
- * @returns The value returned by the work after a successful commit.
370
+ * Reads the exact bytes used as a conditional-mutation guard.
371
+ * @param client Provides the operation client.
372
+ * @param id Identifies the row.
373
+ * @returns Stored bytes, if present.
263
374
  */
264
- private transaction;
375
+ private rawOn;
376
+ /**
377
+ * Decodes one stored record with the provider's data-error boundary.
378
+ * @param raw Supplies exact stored bytes.
379
+ * @returns Decoded Protobuf record.
380
+ */
381
+ private decode;
382
+ /**
383
+ * Builds a conditional update that changes bytes and materialized columns together.
384
+ * @returns Parameterized update SQL.
385
+ */
386
+ private casUpdateSql;
265
387
  /**
266
388
  * Executes work with one prepared and automatically released client.
267
389
  *
@@ -270,12 +392,44 @@ export declare class PostgresRecordStorage<I, R extends Message> extends RecordS
270
392
  * @returns The value returned by the work.
271
393
  */
272
394
  private using;
395
+ /**
396
+ * Executes one prepared record operation on a released client.
397
+ *
398
+ * @typeParam T The operation result.
399
+ * @param work Performs the client operation.
400
+ * @returns The operation result.
401
+ */
402
+ private usePrepared;
403
+ /**
404
+ * Executes Agent-scoped record work under one PostgreSQL transaction.
405
+ *
406
+ * @typeParam T Result of the transaction work.
407
+ * @param work Operations to run on the acquired client.
408
+ * @returns Result after commit.
409
+ */
410
+ private transaction;
411
+ /**
412
+ * Executes one prepared Agent transaction on a released client.
413
+ *
414
+ * @typeParam T The transaction result.
415
+ * @param work Performs work on the transaction client.
416
+ * @returns The committed result.
417
+ */
418
+ private transactionPrepared;
419
+ /**
420
+ * Calculates a stable Agent advisory key in this database and schema.
421
+ *
422
+ * @param domain Lock namespace within the provider.
423
+ * @param identity Components of the lock identity.
424
+ * @returns Stable advisory lock key.
425
+ */
426
+ private historyKey;
273
427
  /**
274
428
  * Reads and decodes one record on the supplied client.
275
429
  *
276
430
  * @param client Provides the active client.
277
431
  * @param id Identifies the record.
278
- * @param lock Whether to lock the selected row for update.
432
+ * @param locked Whether to lock the selected row in the Agent transaction.
279
433
  * @returns The decoded record, when present.
280
434
  */
281
435
  private readOn;
@@ -287,58 +441,30 @@ export declare class PostgresRecordStorage<I, R extends Message> extends RecordS
287
441
  * @returns The decoded record entries.
288
442
  */
289
443
  private entries;
290
- /**
291
- * Acquires the transaction lock for one record slot.
292
- *
293
- * @param client Provides the active transaction client.
294
- * @param id Identifies the record slot.
295
- * @returns A promise that resolves after lock acquisition.
296
- */
297
- private lockSlot;
298
- /**
299
- * Acquires record-slot locks in stable order to avoid deadlocks.
300
- *
301
- * @param client Provides the active transaction client.
302
- * @param ids Identify the record slots.
303
- * @returns A promise that resolves after every lock is acquired.
304
- */
305
- private lockSlots;
306
444
  /**
307
445
  * Writes one record on a caller-managed client.
308
446
  *
309
- * @param client Provides the active transaction client.
447
+ * @param client Provides the acquired client.
310
448
  * @param record Supplies the record to write.
311
- * @param id Identifies the record.
312
- * @param locked Whether the caller already holds the record lock.
313
449
  * @returns A promise that resolves after the upsert.
314
450
  */
315
451
  private writeOn;
316
452
  /**
317
453
  * Deletes one record on a caller-managed client.
318
454
  *
319
- * @param client Provides the active transaction client.
455
+ * @param client Provides the acquired client.
320
456
  * @param id Identifies the record.
321
- * @param locked Whether the caller already holds the record lock.
322
457
  * @returns Whether PostgreSQL deleted a row.
323
458
  */
324
459
  private deleteOn;
325
460
  /**
326
461
  * Stores an immutable record or confirms an identical existing record.
327
462
  *
328
- * @param client Provides the active transaction client.
463
+ * @param client Provides the acquired client.
329
464
  * @param record Supplies the immutable record.
330
- * @param locked Whether the caller already holds the record lock.
331
465
  * @returns A promise that resolves after insertion or identity confirmation.
332
466
  */
333
467
  private appendImmutableOn;
334
- /**
335
- * Checks that an immutable record is absent or byte-identical.
336
- *
337
- * @param client Provides the active client.
338
- * @param record Supplies the immutable record.
339
- * @returns A promise that rejects for a conflicting stored payload.
340
- */
341
- private assertImmutableOn;
342
468
  /**
343
469
  * Executes provider SQL and decodes its record rows.
344
470
  *
@@ -356,14 +482,6 @@ export declare class PostgresRecordStorage<I, R extends Message> extends RecordS
356
482
  * @returns The PostgreSQL parameter value.
357
483
  */
358
484
  private historyColumn;
359
- /**
360
- * Calculates a stable advisory-lock key within the selected database and schema.
361
- *
362
- * @param domain Separates lock purposes.
363
- * @param identity Identifies the protected resource.
364
- * @returns A signed PostgreSQL advisory-lock key.
365
- */
366
- private historyKey;
367
485
  /**
368
486
  * Encodes one record as ordered table-column values.
369
487
  *
@@ -532,13 +650,6 @@ export declare class PostgresRecordStorage<I, R extends Message> extends RecordS
532
650
  * @returns The limit and offset clause.
533
651
  */
534
652
  private offsetSql;
535
- /**
536
- * Calculates the advisory key for one record mutation.
537
- *
538
- * @param id Identifies the record.
539
- * @returns The signed advisory-lock key.
540
- */
541
- private casKey;
542
653
  }
543
654
  /**
544
655
  * Represents one record after its declared columns are materialized.
@@ -1 +1 @@
1
- {"version":3,"file":"record-storage.d.ts","sourceRoot":"","sources":["../../src/postgres/record-storage.ts"],"names":[],"mappings":"AAcA,OAAO,EAAoC,KAAK,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAEpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAGL,aAAa,EAEb,KAAK,mBAAmB,EAExB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,wBAAwB,EAC9B,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAWrC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAK9D;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAE9B;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB;;;;OAIG;IACH,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;CAChC;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,sBAAsB,CAAC,CAAC,EAAE,CAAC,SAAS,OAAO;IAC1D;;;OAGG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzB;;;;;;OAMG;IACH,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAErE;;;;;;OAMG;IACH,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAE/D;;;;;;OAMG;IACH,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAE7E;;;;;OAKG;IACH,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9D;;;;;OAKG;IACH,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9D;;;;;OAKG;IACH,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpD;;;;;OAKG;IACH,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpD;;;;;;OAMG;IACH,KAAK,CACH,MAAM,EAAE,UAAU,EAClB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,SAAS,iBAAiB,EAAE,GACnC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAEzB;;;;;OAKG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,iBAAiB,CAAC;IAExD;;;OAGG;IACH,KAAK,IAAI,MAAM,CAAC;IAEhB;;;;;OAKG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAAC;IAE7D;;;;OAIG;IACH,UAAU,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC;CAC3B;AAED;;;;;GAKG;AACH,qBAAa,qBAAqB,CAAC,CAAC,EAAE,CAAC,SAAS,OAAO,CAAE,SAAQ,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;;IA0BhF,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IA3B1B;;OAEG;IACH,SAAkB,mBAAmB,QAAQ;IAQ7C;;;;;;;;;;OAUG;gBAED,OAAO,EAAE,cAAc,EACvB,IAAI,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EACL,KAAK,EAAE,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,SAAS,EAAE,uBAAuB,EAClC,OAAO,EAAE,MAAM,IAAI,EACpC,MAAM,CAAC,EAAE,MAAM,MAAM,EACrB,YAAY,GAAE,mBAA+C;IAa/D;;;;OAIG;IACH,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED;;;;OAIG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxB;;;;;OAKG;IACH,eAAe,IAAI,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC;IAkB/C;;OAEG;IACM,KAAK,IAAI,IAAI;IAMtB;;;;;OAKG;IACG,cAAc,CAAC,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAU9C;;;;;OAKG;IACG,eAAe,CAAC,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAM/C;;;;;OAKG;cACa,YAAY,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAMrD;;;;;OAKG;IACH,SAAS,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAInD;;;;;OAKG;cACa,kBAAkB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,SAAS,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IAMhG;;;;OAIG;cACgB,iBAAiB,IAAI,wBAAwB;IAOhE;;;;;OAKG;cACsB,sBAAsB,CAC7C,IAAI,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC3B,OAAO,CAAC,SAAS,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IAKxC;;;;;;;OAOG;cACa,mBAAmB,CACjC,EAAE,EAAE,CAAC,EACL,QAAQ,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,EACxC,IAAI,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,GACnC,OAAO,CAAC,OAAO,CAAC;IAYnB;;;;;OAKG;cACa,eAAe,CAAC,OAAO,EAAE,SAAS,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBtF;;;;;OAKG;IACH,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAQhE;;;;;;;OAOG;YACW,OAAO;IAerB;;;;;;OAMG;YACW,WAAW;IAqBzB;;;;;;OAMG;YACW,KAAK;IAgBnB;;;;;;;OAOG;YACW,MAAM;IAepB;;;;;;OAMG;YACW,OAAO;IAiBrB;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ;IAMhB;;;;;;OAMG;YACW,SAAS;IAMvB;;;;;;;;OAQG;YACW,OAAO;IAUrB;;;;;;;OAOG;YACW,QAAQ;IAKtB;;;;;;;OAOG;YACW,iBAAiB;IAU/B;;;;;;OAMG;YACW,iBAAiB;IAM/B;;;;;;;OAOG;YACW,cAAc;IAe5B;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IAOrB;;;;;;OAMG;IACH,OAAO,CAAC,UAAU;IAYlB;;;;;;OAMG;IACH,OAAO,CAAC,MAAM;IAWd;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IAenB;;;;;OAKG;IACH,OAAO,CAAC,SAAS;IAmCjB;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB;IA4B3B;;;;;OAKG;IACH,OAAO,CAAC,wBAAwB;IAkBhC;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;IAkB9B;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IAc5B;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAO1B;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IAYrB;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IAWnB;;;;;;OAMG;IACH,OAAO,CAAC,YAAY;IAiCpB;;;;;;;;OAQG;IACH,OAAO,CAAC,SAAS;IAUjB;;;;;;OAMG;IACH,OAAO,CAAC,SAAS;IAYjB;;;;;OAKG;IACH,OAAO,CAAC,MAAM;IAOd;;;;;;OAMG;IACH,OAAO,CAAC,KAAK;IAQb;;;;;OAKG;IACH,OAAO,CAAC,EAAE;IAQV;;;;;;OAMG;IACH,OAAO,CAAC,IAAI;IAQZ;;;;OAIG;IACH,OAAO,CAAC,SAAS;IAIjB;;;;OAIG;IACH,OAAO,CAAC,SAAS;IAIjB;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAIpB;;;;OAIG;IACH,OAAO,CAAC,SAAS;IAMjB;;;;OAIG;IACH,OAAO,CAAC,SAAS;IAOjB;;;;;;OAMG;IACH,OAAO,CAAC,SAAS;IAIjB;;;;;OAKG;IACH,OAAO,CAAC,MAAM;CAGf;AAED;;;;;GAKG;AACH,KAAK,YAAY,CAAC,CAAC,EAAE,CAAC,SAAS,OAAO,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"record-storage.d.ts","sourceRoot":"","sources":["../../src/postgres/record-storage.ts"],"names":[],"mappings":"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"}