@expo/entity-database-adapter-knex 0.44.0 → 0.46.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 (91) hide show
  1. package/build/src/EntityFields.js.map +1 -0
  2. package/build/{PostgresEntityDatabaseAdapter.d.ts → src/PostgresEntityDatabaseAdapter.d.ts} +2 -2
  3. package/build/{PostgresEntityDatabaseAdapter.js → src/PostgresEntityDatabaseAdapter.js} +10 -12
  4. package/build/src/PostgresEntityDatabaseAdapter.js.map +1 -0
  5. package/build/{PostgresEntityDatabaseAdapterProvider.d.ts → src/PostgresEntityDatabaseAdapterProvider.d.ts} +2 -2
  6. package/build/src/PostgresEntityDatabaseAdapterProvider.js +11 -0
  7. package/build/src/PostgresEntityDatabaseAdapterProvider.js.map +1 -0
  8. package/build/{PostgresEntityQueryContextProvider.d.ts → src/PostgresEntityQueryContextProvider.d.ts} +1 -1
  9. package/build/{PostgresEntityQueryContextProvider.js → src/PostgresEntityQueryContextProvider.js} +2 -1
  10. package/build/src/PostgresEntityQueryContextProvider.js.map +1 -0
  11. package/build/src/__integration-tests__/EntityCreationUtils-test.d.ts +1 -0
  12. package/build/src/__integration-tests__/EntityCreationUtils-test.js +105 -0
  13. package/build/src/__integration-tests__/EntityCreationUtils-test.js.map +1 -0
  14. package/build/src/__integration-tests__/PostgresEntityIntegration-test.d.ts +1 -0
  15. package/build/src/__integration-tests__/PostgresEntityIntegration-test.js +497 -0
  16. package/build/src/__integration-tests__/PostgresEntityIntegration-test.js.map +1 -0
  17. package/build/src/__integration-tests__/PostgresEntityQueryContextProvider-test.d.ts +1 -0
  18. package/build/src/__integration-tests__/PostgresEntityQueryContextProvider-test.js +294 -0
  19. package/build/src/__integration-tests__/PostgresEntityQueryContextProvider-test.js.map +1 -0
  20. package/build/src/__integration-tests__/PostgresInvalidSetup-test.d.ts +1 -0
  21. package/build/src/__integration-tests__/PostgresInvalidSetup-test.js +70 -0
  22. package/build/src/__integration-tests__/PostgresInvalidSetup-test.js.map +1 -0
  23. package/build/src/__integration-tests__/errors-test.d.ts +1 -0
  24. package/build/src/__integration-tests__/errors-test.js +128 -0
  25. package/build/src/__integration-tests__/errors-test.js.map +1 -0
  26. package/build/src/__testfixtures__/ErrorsTestEntity.d.ts +24 -0
  27. package/build/src/__testfixtures__/ErrorsTestEntity.js +107 -0
  28. package/build/src/__testfixtures__/ErrorsTestEntity.js.map +1 -0
  29. package/build/src/__testfixtures__/InvalidTestEntity.d.ts +19 -0
  30. package/build/src/__testfixtures__/InvalidTestEntity.js +62 -0
  31. package/build/src/__testfixtures__/InvalidTestEntity.js.map +1 -0
  32. package/build/src/__testfixtures__/PostgresTestEntity.d.ts +31 -0
  33. package/build/src/__testfixtures__/PostgresTestEntity.js +96 -0
  34. package/build/src/__testfixtures__/PostgresTestEntity.js.map +1 -0
  35. package/build/src/__testfixtures__/PostgresTriggerTestEntity.d.ts +19 -0
  36. package/build/src/__testfixtures__/PostgresTriggerTestEntity.js +101 -0
  37. package/build/src/__testfixtures__/PostgresTriggerTestEntity.js.map +1 -0
  38. package/build/src/__testfixtures__/PostgresUniqueTestEntity.d.ts +25 -0
  39. package/build/src/__testfixtures__/PostgresUniqueTestEntity.js +71 -0
  40. package/build/src/__testfixtures__/PostgresUniqueTestEntity.js.map +1 -0
  41. package/build/src/__testfixtures__/PostgresValidatorTestEntity.d.ts +19 -0
  42. package/build/src/__testfixtures__/PostgresValidatorTestEntity.js +77 -0
  43. package/build/src/__testfixtures__/PostgresValidatorTestEntity.js.map +1 -0
  44. package/build/src/__testfixtures__/createKnexIntegrationTestEntityCompanionProvider.d.ts +3 -0
  45. package/build/src/__testfixtures__/createKnexIntegrationTestEntityCompanionProvider.js +27 -0
  46. package/build/src/__testfixtures__/createKnexIntegrationTestEntityCompanionProvider.js.map +1 -0
  47. package/build/src/__tests__/EntityFields-test.d.ts +1 -0
  48. package/build/src/__tests__/EntityFields-test.js +8 -0
  49. package/build/src/__tests__/EntityFields-test.js.map +1 -0
  50. package/build/src/errors/__tests__/wrapNativePostgresCallAsync-test.d.ts +1 -0
  51. package/build/src/errors/__tests__/wrapNativePostgresCallAsync-test.js +22 -0
  52. package/build/src/errors/__tests__/wrapNativePostgresCallAsync-test.js.map +1 -0
  53. package/build/src/errors/wrapNativePostgresCallAsync.d.ts +1 -0
  54. package/build/{errors → src/errors}/wrapNativePostgresCallAsync.js +1 -1
  55. package/build/src/errors/wrapNativePostgresCallAsync.js.map +1 -0
  56. package/build/src/index.d.ts +9 -0
  57. package/build/src/index.js +27 -0
  58. package/build/src/index.js.map +1 -0
  59. package/build/tsconfig.tsbuildinfo +1 -0
  60. package/package.json +13 -26
  61. package/src/PostgresEntityDatabaseAdapter.ts +5 -5
  62. package/src/PostgresEntityDatabaseAdapterProvider.ts +3 -5
  63. package/src/PostgresEntityQueryContextProvider.ts +1 -1
  64. package/src/__integration-tests__/EntityCreationUtils-test.ts +224 -0
  65. package/src/__integration-tests__/PostgresEntityIntegration-test.ts +20 -19
  66. package/src/__integration-tests__/PostgresEntityQueryContextProvider-test.ts +3 -2
  67. package/src/__integration-tests__/PostgresInvalidSetup-test.ts +5 -4
  68. package/src/__integration-tests__/errors-test.ts +3 -2
  69. package/src/__testfixtures__/ErrorsTestEntity.ts +6 -6
  70. package/src/__testfixtures__/InvalidTestEntity.ts +6 -10
  71. package/src/__testfixtures__/PostgresTestEntity.ts +8 -12
  72. package/src/__testfixtures__/PostgresTriggerTestEntity.ts +7 -7
  73. package/src/__testfixtures__/PostgresUniqueTestEntity.ts +28 -5
  74. package/src/__testfixtures__/PostgresValidatorTestEntity.ts +6 -6
  75. package/src/__testfixtures__/createKnexIntegrationTestEntityCompanionProvider.ts +4 -4
  76. package/src/errors/__tests__/wrapNativePostgresCallAsync-test.ts +3 -1
  77. package/src/errors/wrapNativePostgresCallAsync.ts +2 -2
  78. package/src/index.ts +4 -4
  79. package/build/EntityFields.js.map +0 -1
  80. package/build/PostgresEntityDatabaseAdapter.js.map +0 -1
  81. package/build/PostgresEntityDatabaseAdapterProvider.js +0 -13
  82. package/build/PostgresEntityDatabaseAdapterProvider.js.map +0 -1
  83. package/build/PostgresEntityQueryContextProvider.js.map +0 -1
  84. package/build/errors/wrapNativePostgresCallAsync.d.ts +0 -1
  85. package/build/errors/wrapNativePostgresCallAsync.js.map +0 -1
  86. package/build/index.d.ts +0 -9
  87. package/build/index.js +0 -35
  88. package/build/index.js.map +0 -1
  89. package/build/tsconfig.build.tsbuildinfo +0 -1
  90. /package/build/{EntityFields.d.ts → src/EntityFields.d.ts} +0 -0
  91. /package/build/{EntityFields.js → src/EntityFields.js} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntityFields.js","sourceRoot":"","sources":["../../src/EntityFields.ts"],"names":[],"mappings":";;;AAAA,yCAAqD;AAErD;;GAEG;AACH,MAAa,cAAsD,SAAQ,8BAG1E;IACW,0BAA0B,CAAC,KAAY;QAC/C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;CACF;AAPD,wCAOC;AAED;;;GAGG;AACH,MAAa,mBAEX,SAAQ,8BAAyD;IACvD,0BAA0B,CAAC,MAAW;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAND,kDAMC;AAED;;GAEG;AACH,MAAa,WAAmD,SAAQ,8BAGvE;IACW,0BAA0B,CAAC,KAAa;QAChD,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;IACnC,CAAC;CACF;AAPD,kCAOC"}
@@ -1,6 +1,6 @@
1
- import { EntityDatabaseAdapter, FieldTransformerMap, TableQuerySelectionModifiers, TableFieldSingleValueEqualityCondition, TableFieldMultiValueEqualityCondition, TableQuerySelectionModifiersWithOrderByRaw } from '@expo/entity';
1
+ import { EntityDatabaseAdapter, FieldTransformerMap, TableFieldMultiValueEqualityCondition, TableFieldSingleValueEqualityCondition, TableQuerySelectionModifiers, TableQuerySelectionModifiersWithOrderByRaw } from '@expo/entity';
2
2
  import { Knex } from 'knex';
3
- export default class PostgresEntityDatabaseAdapter<TFields extends Record<string, any>, TIDField extends keyof TFields> extends EntityDatabaseAdapter<TFields, TIDField> {
3
+ export declare class PostgresEntityDatabaseAdapter<TFields extends Record<string, any>, TIDField extends keyof TFields> extends EntityDatabaseAdapter<TFields, TIDField> {
4
4
  protected getFieldTransformerMap(): FieldTransformerMap;
5
5
  protected fetchManyWhereInternalAsync(queryInterface: Knex, tableName: string, tableColumns: readonly string[], tableTuples: any[][]): Promise<object[]>;
6
6
  private applyQueryModifiersToQueryOrderByRaw;
@@ -1,11 +1,9 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PostgresEntityDatabaseAdapter = void 0;
6
4
  const entity_1 = require("@expo/entity");
7
5
  const EntityFields_1 = require("./EntityFields");
8
- const wrapNativePostgresCallAsync_1 = __importDefault(require("./errors/wrapNativePostgresCallAsync"));
6
+ const wrapNativePostgresCallAsync_1 = require("./errors/wrapNativePostgresCallAsync");
9
7
  class PostgresEntityDatabaseAdapter extends entity_1.EntityDatabaseAdapter {
10
8
  getFieldTransformerMap() {
11
9
  return new Map([
@@ -54,7 +52,7 @@ class PostgresEntityDatabaseAdapter extends entity_1.EntityDatabaseAdapter {
54
52
  // We could use the IN operator for single column queries as well, but we prefer to use ANY to at least keep some
55
53
  // consistency in the query shape for the stats table.
56
54
  if (tableColumns.length === 1) {
57
- return await (0, wrapNativePostgresCallAsync_1.default)(() => queryInterface
55
+ return await (0, wrapNativePostgresCallAsync_1.wrapNativePostgresCallAsync)(() => queryInterface
58
56
  .select()
59
57
  .from(tableName)
60
58
  .whereRaw(`(??) = ANY(?)`, [
@@ -62,7 +60,7 @@ class PostgresEntityDatabaseAdapter extends entity_1.EntityDatabaseAdapter {
62
60
  tableTuples.map((tableTuple) => tableTuple[0]),
63
61
  ]));
64
62
  }
65
- return await (0, wrapNativePostgresCallAsync_1.default)(() => queryInterface.select().from(tableName).whereIn(tableColumns, tableTuples));
63
+ return await (0, wrapNativePostgresCallAsync_1.wrapNativePostgresCallAsync)(() => queryInterface.select().from(tableName).whereIn(tableColumns, tableTuples));
66
64
  }
67
65
  applyQueryModifiersToQueryOrderByRaw(query, querySelectionModifiers) {
68
66
  let ret = this.applyQueryModifiersToQuery(query, querySelectionModifiers);
@@ -119,7 +117,7 @@ class PostgresEntityDatabaseAdapter extends entity_1.EntityDatabaseAdapter {
119
117
  }
120
118
  }
121
119
  query = this.applyQueryModifiersToQuery(query, querySelectionModifiers);
122
- return await (0, wrapNativePostgresCallAsync_1.default)(() => query);
120
+ return await (0, wrapNativePostgresCallAsync_1.wrapNativePostgresCallAsync)(() => query);
123
121
  }
124
122
  async fetchManyByRawWhereClauseInternalAsync(queryInterface, tableName, rawWhereClause, bindings, querySelectionModifiers) {
125
123
  let query = queryInterface
@@ -127,17 +125,17 @@ class PostgresEntityDatabaseAdapter extends entity_1.EntityDatabaseAdapter {
127
125
  .from(tableName)
128
126
  .whereRaw(rawWhereClause, bindings);
129
127
  query = this.applyQueryModifiersToQueryOrderByRaw(query, querySelectionModifiers);
130
- return await (0, wrapNativePostgresCallAsync_1.default)(() => query);
128
+ return await (0, wrapNativePostgresCallAsync_1.wrapNativePostgresCallAsync)(() => query);
131
129
  }
132
130
  async insertInternalAsync(queryInterface, tableName, object) {
133
- return await (0, wrapNativePostgresCallAsync_1.default)(() => queryInterface.insert(object).into(tableName).returning('*'));
131
+ return await (0, wrapNativePostgresCallAsync_1.wrapNativePostgresCallAsync)(() => queryInterface.insert(object).into(tableName).returning('*'));
134
132
  }
135
133
  async updateInternalAsync(queryInterface, tableName, tableIdField, id, object) {
136
- return await (0, wrapNativePostgresCallAsync_1.default)(() => queryInterface.update(object).into(tableName).where(tableIdField, id).returning('*'));
134
+ return await (0, wrapNativePostgresCallAsync_1.wrapNativePostgresCallAsync)(() => queryInterface.update(object).into(tableName).where(tableIdField, id).returning('*'));
137
135
  }
138
136
  async deleteInternalAsync(queryInterface, tableName, tableIdField, id) {
139
- return await (0, wrapNativePostgresCallAsync_1.default)(() => queryInterface.into(tableName).where(tableIdField, id).del());
137
+ return await (0, wrapNativePostgresCallAsync_1.wrapNativePostgresCallAsync)(() => queryInterface.into(tableName).where(tableIdField, id).del());
140
138
  }
141
139
  }
142
- exports.default = PostgresEntityDatabaseAdapter;
140
+ exports.PostgresEntityDatabaseAdapter = PostgresEntityDatabaseAdapter;
143
141
  //# sourceMappingURL=PostgresEntityDatabaseAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PostgresEntityDatabaseAdapter.js","sourceRoot":"","sources":["../../src/PostgresEntityDatabaseAdapter.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { IEntityDatabaseAdapterProvider, EntityConfiguration, EntityDatabaseAdapter } from '@expo/entity';
2
- export default class PostgresEntityDatabaseAdapterProvider implements IEntityDatabaseAdapterProvider {
1
+ import { EntityConfiguration, EntityDatabaseAdapter, IEntityDatabaseAdapterProvider } from '@expo/entity';
2
+ export declare class PostgresEntityDatabaseAdapterProvider implements IEntityDatabaseAdapterProvider {
3
3
  getDatabaseAdapter<TFields extends Record<string, any>, TIDField extends keyof TFields>(entityConfiguration: EntityConfiguration<TFields, TIDField>): EntityDatabaseAdapter<TFields, TIDField>;
4
4
  }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PostgresEntityDatabaseAdapterProvider = void 0;
4
+ const PostgresEntityDatabaseAdapter_1 = require("./PostgresEntityDatabaseAdapter");
5
+ class PostgresEntityDatabaseAdapterProvider {
6
+ getDatabaseAdapter(entityConfiguration) {
7
+ return new PostgresEntityDatabaseAdapter_1.PostgresEntityDatabaseAdapter(entityConfiguration);
8
+ }
9
+ }
10
+ exports.PostgresEntityDatabaseAdapterProvider = PostgresEntityDatabaseAdapterProvider;
11
+ //# sourceMappingURL=PostgresEntityDatabaseAdapterProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PostgresEntityDatabaseAdapterProvider.js","sourceRoot":"","sources":["../../src/PostgresEntityDatabaseAdapterProvider.ts"],"names":[],"mappings":";;;AAMA,mFAAgF;AAEhF,MAAa,qCAAqC;IAChD,kBAAkB,CAChB,mBAA2D;QAE3D,OAAO,IAAI,6DAA6B,CAAC,mBAAmB,CAAC,CAAC;IAChE,CAAC;CACF;AAND,sFAMC"}
@@ -3,7 +3,7 @@ import { Knex } from 'knex';
3
3
  /**
4
4
  * Query context provider for knex (postgres).
5
5
  */
6
- export default class PostgresEntityQueryContextProvider extends EntityQueryContextProvider {
6
+ export declare class PostgresEntityQueryContextProvider extends EntityQueryContextProvider {
7
7
  private readonly knexInstance;
8
8
  constructor(knexInstance: Knex);
9
9
  protected getQueryInterface(): any;
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PostgresEntityQueryContextProvider = void 0;
3
4
  const entity_1 = require("@expo/entity");
4
5
  /**
5
6
  * Query context provider for knex (postgres).
@@ -39,5 +40,5 @@ class PostgresEntityQueryContextProvider extends entity_1.EntityQueryContextProv
39
40
  };
40
41
  }
41
42
  }
42
- exports.default = PostgresEntityQueryContextProvider;
43
+ exports.PostgresEntityQueryContextProvider = PostgresEntityQueryContextProvider;
43
44
  //# sourceMappingURL=PostgresEntityQueryContextProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PostgresEntityQueryContextProvider.js","sourceRoot":"","sources":["../../src/PostgresEntityQueryContextProvider.ts"],"names":[],"mappings":";;;AAAA,yCAIsB;AAGtB;;GAEG;AACH,MAAa,kCAAmC,SAAQ,mCAA0B;IACnD;IAA7B,YAA6B,YAAkB;QAC7C,KAAK,EAAE,CAAC;QADmB,iBAAY,GAAZ,YAAY,CAAM;IAE/C,CAAC;IAES,iBAAiB;QACzB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAES,uBAAuB,CAC/B,iBAAqC;QAErC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAC1B,IAAI,CAAC,YAAY,CAAC,WAAW,CAC3B,gBAAgB,EAChB,iBAAiB;YACf,CAAC,CAAC,kCAAkC,CAAC,wBAAwB,CAAC,iBAAiB,CAAC;YAChF,CAAC,CAAC,SAAS,CACd,CAAC;IACN,CAAC;IAES,6BAA6B,CACrC,mBAAwB;QAExB,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAE,mBAA4B,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAC3F,CAAC;IAEO,MAAM,CAAC,wBAAwB,CACrC,iBAAoC;QAEpC,MAAM,qBAAqB,GAAG,CAC5B,cAAyC,EACnB,EAAE;YACxB,QAAQ,cAAc,EAAE,CAAC;gBACvB,KAAK,kCAAyB,CAAC,cAAc;oBAC3C,OAAO,gBAAgB,CAAC;gBAC1B,KAAK,kCAAyB,CAAC,eAAe;oBAC5C,OAAO,iBAAiB,CAAC;gBAC3B,KAAK,kCAAyB,CAAC,YAAY;oBACzC,OAAO,cAAc,CAAC;YAC1B,CAAC;QACH,CAAC,CAAC;QAEF,OAAO;YACL,GAAG,CAAC,iBAAiB,CAAC,cAAc;gBAClC,CAAC,CAAC,EAAE,cAAc,EAAE,qBAAqB,CAAC,iBAAiB,CAAC,cAAc,CAAC,EAAE;gBAC7E,CAAC,CAAC,EAAE,CAAC;SACR,CAAC;IACJ,CAAC;CACF;AAjDD,gFAiDC"}
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const entity_1 = require("@expo/entity");
7
+ const globals_1 = require("@jest/globals");
8
+ const knex_1 = __importDefault(require("knex"));
9
+ const nullthrows_1 = __importDefault(require("nullthrows"));
10
+ const PostgresUniqueTestEntity_1 = require("../__testfixtures__/PostgresUniqueTestEntity");
11
+ const createKnexIntegrationTestEntityCompanionProvider_1 = require("../__testfixtures__/createKnexIntegrationTestEntityCompanionProvider");
12
+ (0, globals_1.describe)(entity_1.createWithUniqueConstraintRecoveryAsync, () => {
13
+ let knexInstance;
14
+ (0, globals_1.beforeAll)(() => {
15
+ knexInstance = (0, knex_1.default)({
16
+ client: 'pg',
17
+ connection: {
18
+ user: (0, nullthrows_1.default)(process.env['PGUSER']),
19
+ password: (0, nullthrows_1.default)(process.env['PGPASSWORD']),
20
+ host: 'localhost',
21
+ port: parseInt((0, nullthrows_1.default)(process.env['PGPORT']), 10),
22
+ database: (0, nullthrows_1.default)(process.env['PGDATABASE']),
23
+ },
24
+ });
25
+ });
26
+ (0, globals_1.beforeEach)(async () => {
27
+ await PostgresUniqueTestEntity_1.PostgresUniqueTestEntity.createOrTruncatePostgresTableAsync(knexInstance);
28
+ });
29
+ (0, globals_1.afterAll)(async () => {
30
+ await PostgresUniqueTestEntity_1.PostgresUniqueTestEntity.dropPostgresTableAsync(knexInstance);
31
+ await knexInstance.destroy();
32
+ });
33
+ globals_1.describe.each([true, false])('is parallel creations %p', (parallel) => {
34
+ (0, globals_1.it)('recovers when the same entity is created twice outside of transaction', async () => {
35
+ const vc1 = new entity_1.ViewerContext((0, createKnexIntegrationTestEntityCompanionProvider_1.createKnexIntegrationTestEntityCompanionProvider)(knexInstance));
36
+ const args = {
37
+ name: 'unique',
38
+ };
39
+ let createdEntities;
40
+ if (parallel) {
41
+ createdEntities = await Promise.all([
42
+ (0, entity_1.createWithUniqueConstraintRecoveryAsync)(vc1, PostgresUniqueTestEntity_1.PostgresUniqueTestEntity, PostgresUniqueTestEntity_1.PostgresUniqueTestEntity.getByNameAsync, args, PostgresUniqueTestEntity_1.PostgresUniqueTestEntity.createWithNameAsync, args),
43
+ (0, entity_1.createWithUniqueConstraintRecoveryAsync)(vc1, PostgresUniqueTestEntity_1.PostgresUniqueTestEntity, PostgresUniqueTestEntity_1.PostgresUniqueTestEntity.getByNameAsync, args, PostgresUniqueTestEntity_1.PostgresUniqueTestEntity.createWithNameAsync, args),
44
+ ]);
45
+ }
46
+ else {
47
+ createdEntities = [
48
+ await (0, entity_1.createWithUniqueConstraintRecoveryAsync)(vc1, PostgresUniqueTestEntity_1.PostgresUniqueTestEntity, PostgresUniqueTestEntity_1.PostgresUniqueTestEntity.getByNameAsync, args, PostgresUniqueTestEntity_1.PostgresUniqueTestEntity.createWithNameAsync, args),
49
+ await (0, entity_1.createWithUniqueConstraintRecoveryAsync)(vc1, PostgresUniqueTestEntity_1.PostgresUniqueTestEntity, PostgresUniqueTestEntity_1.PostgresUniqueTestEntity.getByNameAsync, args, PostgresUniqueTestEntity_1.PostgresUniqueTestEntity.createWithNameAsync, args),
50
+ ];
51
+ }
52
+ (0, globals_1.expect)(createdEntities[0].getID()).toEqual(createdEntities[1].getID());
53
+ });
54
+ (0, globals_1.it)('recovers when the same entity is created twice within same transaction', async () => {
55
+ const vc1 = new entity_1.ViewerContext((0, createKnexIntegrationTestEntityCompanionProvider_1.createKnexIntegrationTestEntityCompanionProvider)(knexInstance));
56
+ const args = {
57
+ name: 'unique',
58
+ };
59
+ const createdEntities = await vc1.runInTransactionForDatabaseAdaptorFlavorAsync('postgres', async (queryContext) => {
60
+ if (parallel) {
61
+ return await Promise.all([
62
+ (0, entity_1.createWithUniqueConstraintRecoveryAsync)(vc1, PostgresUniqueTestEntity_1.PostgresUniqueTestEntity, PostgresUniqueTestEntity_1.PostgresUniqueTestEntity.getByNameAsync, args, PostgresUniqueTestEntity_1.PostgresUniqueTestEntity.createWithNameAsync, args, queryContext),
63
+ (0, entity_1.createWithUniqueConstraintRecoveryAsync)(vc1, PostgresUniqueTestEntity_1.PostgresUniqueTestEntity, PostgresUniqueTestEntity_1.PostgresUniqueTestEntity.getByNameAsync, args, PostgresUniqueTestEntity_1.PostgresUniqueTestEntity.createWithNameAsync, args, queryContext),
64
+ ]);
65
+ }
66
+ else {
67
+ return [
68
+ await (0, entity_1.createWithUniqueConstraintRecoveryAsync)(vc1, PostgresUniqueTestEntity_1.PostgresUniqueTestEntity, PostgresUniqueTestEntity_1.PostgresUniqueTestEntity.getByNameAsync, args, PostgresUniqueTestEntity_1.PostgresUniqueTestEntity.createWithNameAsync, args, queryContext),
69
+ await (0, entity_1.createWithUniqueConstraintRecoveryAsync)(vc1, PostgresUniqueTestEntity_1.PostgresUniqueTestEntity, PostgresUniqueTestEntity_1.PostgresUniqueTestEntity.getByNameAsync, args, PostgresUniqueTestEntity_1.PostgresUniqueTestEntity.createWithNameAsync, args, queryContext),
70
+ ];
71
+ }
72
+ });
73
+ (0, globals_1.expect)((0, nullthrows_1.default)(createdEntities[0]).getID()).toEqual((0, nullthrows_1.default)(createdEntities[1]).getID());
74
+ });
75
+ (0, globals_1.it)('recovers when the same entity is created twice within two transactions', async () => {
76
+ const vc1 = new entity_1.ViewerContext((0, createKnexIntegrationTestEntityCompanionProvider_1.createKnexIntegrationTestEntityCompanionProvider)(knexInstance));
77
+ const args = {
78
+ name: 'unique',
79
+ };
80
+ let createdEntities;
81
+ if (parallel) {
82
+ createdEntities = await Promise.all([
83
+ await vc1.runInTransactionForDatabaseAdaptorFlavorAsync('postgres', async (queryContext) => {
84
+ return await (0, entity_1.createWithUniqueConstraintRecoveryAsync)(vc1, PostgresUniqueTestEntity_1.PostgresUniqueTestEntity, PostgresUniqueTestEntity_1.PostgresUniqueTestEntity.getByNameAsync, args, PostgresUniqueTestEntity_1.PostgresUniqueTestEntity.createWithNameAsync, args, queryContext);
85
+ }),
86
+ await vc1.runInTransactionForDatabaseAdaptorFlavorAsync('postgres', async (queryContext) => {
87
+ return await (0, entity_1.createWithUniqueConstraintRecoveryAsync)(vc1, PostgresUniqueTestEntity_1.PostgresUniqueTestEntity, PostgresUniqueTestEntity_1.PostgresUniqueTestEntity.getByNameAsync, args, PostgresUniqueTestEntity_1.PostgresUniqueTestEntity.createWithNameAsync, args, queryContext);
88
+ }),
89
+ ]);
90
+ }
91
+ else {
92
+ createdEntities = [
93
+ await vc1.runInTransactionForDatabaseAdaptorFlavorAsync('postgres', async (queryContext) => {
94
+ return await (0, entity_1.createWithUniqueConstraintRecoveryAsync)(vc1, PostgresUniqueTestEntity_1.PostgresUniqueTestEntity, PostgresUniqueTestEntity_1.PostgresUniqueTestEntity.getByNameAsync, args, PostgresUniqueTestEntity_1.PostgresUniqueTestEntity.createWithNameAsync, args, queryContext);
95
+ }),
96
+ await vc1.runInTransactionForDatabaseAdaptorFlavorAsync('postgres', async (queryContext) => {
97
+ return await (0, entity_1.createWithUniqueConstraintRecoveryAsync)(vc1, PostgresUniqueTestEntity_1.PostgresUniqueTestEntity, PostgresUniqueTestEntity_1.PostgresUniqueTestEntity.getByNameAsync, args, PostgresUniqueTestEntity_1.PostgresUniqueTestEntity.createWithNameAsync, args, queryContext);
98
+ }),
99
+ ];
100
+ }
101
+ (0, globals_1.expect)((0, nullthrows_1.default)(createdEntities[0]).getID()).toEqual((0, nullthrows_1.default)(createdEntities[1]).getID());
102
+ });
103
+ });
104
+ });
105
+ //# sourceMappingURL=EntityCreationUtils-test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntityCreationUtils-test.js","sourceRoot":"","sources":["../../../src/__integration-tests__/EntityCreationUtils-test.ts"],"names":[],"mappings":"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"}