@proteinjs/db-driver-spanner 1.12.3 → 1.14.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.
Files changed (61) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/LICENSE +21 -0
  3. package/dist/generated/index.js +1 -1
  4. package/dist/generated/index.js.map +1 -1
  5. package/dist/generated/test/index.d.ts.map +1 -1
  6. package/dist/generated/test/index.js +3 -1
  7. package/dist/generated/test/index.js.map +1 -1
  8. package/dist/src/SpannerConfig.d.ts +22 -0
  9. package/dist/src/SpannerConfig.d.ts.map +1 -1
  10. package/dist/src/SpannerDriver.d.ts +56 -9
  11. package/dist/src/SpannerDriver.d.ts.map +1 -1
  12. package/dist/src/SpannerDriver.js +229 -35
  13. package/dist/src/SpannerDriver.js.map +1 -1
  14. package/dist/src/SpannerLivenessMonitor.d.ts +25 -0
  15. package/dist/src/SpannerLivenessMonitor.d.ts.map +1 -1
  16. package/dist/src/SpannerLivenessMonitor.js +59 -4
  17. package/dist/src/SpannerLivenessMonitor.js.map +1 -1
  18. package/dist/test/ServiceUpdateVerbs.test.d.ts +2 -0
  19. package/dist/test/ServiceUpdateVerbs.test.d.ts.map +1 -0
  20. package/dist/test/ServiceUpdateVerbs.test.js +325 -0
  21. package/dist/test/ServiceUpdateVerbs.test.js.map +1 -0
  22. package/dist/test/SessionPoolExhaustion.test.d.ts +2 -0
  23. package/dist/test/SessionPoolExhaustion.test.d.ts.map +1 -0
  24. package/dist/test/SessionPoolExhaustion.test.js +230 -0
  25. package/dist/test/SessionPoolExhaustion.test.js.map +1 -0
  26. package/dist/test/SessionRecordTableQuery.test.d.ts +2 -0
  27. package/dist/test/SessionRecordTableQuery.test.d.ts.map +1 -0
  28. package/dist/test/SessionRecordTableQuery.test.js +185 -0
  29. package/dist/test/SessionRecordTableQuery.test.js.map +1 -0
  30. package/dist/test/SpannerLivenessMonitor.test.js +65 -0
  31. package/dist/test/SpannerLivenessMonitor.test.js.map +1 -1
  32. package/dist/test/SpannerOperationDeadline.test.d.ts +2 -0
  33. package/dist/test/SpannerOperationDeadline.test.d.ts.map +1 -0
  34. package/dist/test/SpannerOperationDeadline.test.js +227 -0
  35. package/dist/test/SpannerOperationDeadline.test.js.map +1 -0
  36. package/dist/test/TransactionSafety.test.d.ts +2 -0
  37. package/dist/test/TransactionSafety.test.d.ts.map +1 -0
  38. package/dist/test/TransactionSafety.test.js +325 -0
  39. package/dist/test/TransactionSafety.test.js.map +1 -0
  40. package/dist/test/index.d.ts +1 -0
  41. package/dist/test/index.d.ts.map +1 -1
  42. package/dist/test/index.js +1 -0
  43. package/dist/test/index.js.map +1 -1
  44. package/dist/test/util/serviceUpdateVerbsTestTables.d.ts +45 -0
  45. package/dist/test/util/serviceUpdateVerbsTestTables.d.ts.map +1 -0
  46. package/dist/test/util/serviceUpdateVerbsTestTables.js +100 -0
  47. package/dist/test/util/serviceUpdateVerbsTestTables.js.map +1 -0
  48. package/generated/index.ts +6 -9
  49. package/generated/test/index.ts +9 -10
  50. package/package.json +7 -6
  51. package/src/SpannerConfig.ts +22 -0
  52. package/src/SpannerDriver.ts +215 -28
  53. package/src/SpannerLivenessMonitor.ts +73 -5
  54. package/test/ServiceUpdateVerbs.test.ts +188 -0
  55. package/test/SessionPoolExhaustion.test.ts +127 -0
  56. package/test/SessionRecordTableQuery.test.ts +118 -0
  57. package/test/SpannerLivenessMonitor.test.ts +70 -0
  58. package/test/SpannerOperationDeadline.test.ts +156 -0
  59. package/test/TransactionSafety.test.ts +157 -0
  60. package/test/index.ts +1 -0
  61. package/test/util/serviceUpdateVerbsTestTables.ts +55 -0
@@ -0,0 +1,55 @@
1
+ import {
2
+ ObjectColumn,
3
+ Record,
4
+ ReferenceArray,
5
+ ReferenceArrayColumn,
6
+ StringColumn,
7
+ Table,
8
+ withRecordColumns,
9
+ } from '@proteinjs/db';
10
+
11
+ /**
12
+ * Tables for `ServiceUpdateVerbs.test.ts` (the service-path RMW update verbs:
13
+ * `updateArrayMembership` / `updatePreserving`).
14
+ *
15
+ * Defined here rather than in the test file so the reflection build registers them as `Table`
16
+ * loadables — `tableByName` (which the db-service singleton and the `Table` wire serializer both
17
+ * resolve through) must be able to find them for the test's RPC-boundary simulation.
18
+ */
19
+
20
+ /**
21
+ * Mutable stand-in for the ambient caller identity a scoped column reads (in production, the
22
+ * session's user id). Tests reassign `current` to act as different callers.
23
+ */
24
+ export const serviceVerbsScopeContext = { current: 'scope-a' };
25
+
26
+ export type ServiceVerbsDocBody = { content?: string; style?: { color?: string } };
27
+
28
+ export interface ServiceVerbsDoc extends Record {
29
+ title: string;
30
+ scope?: string;
31
+ /** Self-referencing children list — the reference-array shape membership ops target. */
32
+ members?: ReferenceArray<ServiceVerbsDoc>;
33
+ /** Plain-JSON column with sub-path ownership split across writers (content vs style). */
34
+ body?: ServiceVerbsDocBody;
35
+ }
36
+
37
+ /** Mirrors the generic scoped-record mechanism: scope forced on insert, immutable, injected into every non-system query. */
38
+ export class ServiceVerbsDocTable extends Table<ServiceVerbsDoc> {
39
+ public name = 'db_test_service_update_verbs_doc';
40
+ public columns = withRecordColumns<ServiceVerbsDoc>({
41
+ title: new StringColumn('title'),
42
+ scope: new StringColumn('scope', {
43
+ defaultValue: async () => serviceVerbsScopeContext.current,
44
+ forceDefaultValue: (runAsSystem) => !runAsSystem,
45
+ immutable: (runAsSystem) => !runAsSystem,
46
+ addToQuery: async (qb, runAsSystem) => {
47
+ if (!runAsSystem) {
48
+ qb.condition({ field: 'scope', operator: 'IN', value: [serviceVerbsScopeContext.current] });
49
+ }
50
+ },
51
+ }),
52
+ members: new ReferenceArrayColumn('members', 'db_test_service_update_verbs_doc', false),
53
+ body: new ObjectColumn<ServiceVerbsDocBody>('body'),
54
+ });
55
+ }