@expo/entity-database-adapter-knex 0.27.0 → 0.28.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/build/EntityFields.d.ts +20 -0
- package/build/EntityFields.js +33 -0
- package/build/EntityFields.js.map +1 -0
- package/build/PostgresEntityDatabaseAdapter.js +3 -2
- package/build/PostgresEntityDatabaseAdapter.js.map +1 -1
- package/build/PostgresEntityQueryContextProvider.d.ts +1 -0
- package/build/PostgresEntityQueryContextProvider.js +3 -0
- package/build/PostgresEntityQueryContextProvider.js.map +1 -1
- package/build/__integration-tests__/PostgresEntityIntegration-test.js +35 -1
- package/build/__integration-tests__/PostgresEntityIntegration-test.js.map +1 -1
- package/build/__integration-tests__/PostgresEntityQueryContextProvider-test.d.ts +1 -0
- package/build/__integration-tests__/PostgresEntityQueryContextProvider-test.js +88 -0
- package/build/__integration-tests__/PostgresEntityQueryContextProvider-test.js.map +1 -0
- package/build/__tests__/EntityFields-test.d.ts +1 -0
- package/build/__tests__/EntityFields-test.js +8 -0
- package/build/__tests__/EntityFields-test.js.map +1 -0
- package/build/index.d.ts +1 -0
- package/build/index.js +15 -0
- package/build/index.js.map +1 -1
- package/build/testfixtures/PostgresTestEntity.d.ts +1 -0
- package/build/testfixtures/PostgresTestEntity.js +8 -4
- package/build/testfixtures/PostgresTestEntity.js.map +1 -1
- package/build/testfixtures/PostgresTriggerTestEntity.js +1 -2
- package/build/testfixtures/PostgresTriggerTestEntity.js.map +1 -1
- package/build/testfixtures/PostgresUniqueTestEntity.d.ts +19 -0
- package/build/testfixtures/PostgresUniqueTestEntity.js +66 -0
- package/build/testfixtures/PostgresUniqueTestEntity.js.map +1 -0
- package/build/testfixtures/PostgresValidatorTestEntity.js +1 -2
- package/build/testfixtures/PostgresValidatorTestEntity.js.map +1 -1
- package/package.json +3 -3
- package/src/EntityFields.ts +29 -0
- package/src/PostgresEntityDatabaseAdapter.ts +1 -2
- package/src/PostgresEntityQueryContextProvider.ts +6 -0
- package/src/__integration-tests__/PostgresEntityIntegration-test.ts +46 -1
- package/src/__integration-tests__/PostgresEntityQueryContextProvider-test.ts +101 -0
- package/src/__tests__/EntityFields-test.ts +19 -0
- package/src/index.ts +1 -0
- package/src/testfixtures/PostgresTestEntity.ts +8 -5
- package/src/testfixtures/PostgresTriggerTestEntity.ts +1 -3
- package/src/testfixtures/PostgresUniqueTestEntity.ts +115 -0
- package/src/testfixtures/PostgresValidatorTestEntity.ts +1 -3
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { EntityFieldDefinition } from '@expo/entity';
|
|
2
|
+
/**
|
|
3
|
+
* EntityFieldDefinition for a Postres column with a JS JSON array type.
|
|
4
|
+
*/
|
|
5
|
+
export declare class JSONArrayField extends EntityFieldDefinition<any[]> {
|
|
6
|
+
protected validateInputValueInternal(value: any[]): boolean;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* EntityFieldDefinition for a Postgres column that may be a JS JSON array type.
|
|
10
|
+
* Does not do any validation.
|
|
11
|
+
*/
|
|
12
|
+
export declare class MaybeJSONArrayField extends EntityFieldDefinition<any | any[]> {
|
|
13
|
+
protected validateInputValueInternal(_value: any): boolean;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* EntityFieldDefinition for a Postgres BIGINT column.
|
|
17
|
+
*/
|
|
18
|
+
export declare class BigIntField extends EntityFieldDefinition<string> {
|
|
19
|
+
protected validateInputValueInternal(value: string): boolean;
|
|
20
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BigIntField = exports.MaybeJSONArrayField = exports.JSONArrayField = void 0;
|
|
4
|
+
const entity_1 = require("@expo/entity");
|
|
5
|
+
/**
|
|
6
|
+
* EntityFieldDefinition for a Postres column with a JS JSON array type.
|
|
7
|
+
*/
|
|
8
|
+
class JSONArrayField extends entity_1.EntityFieldDefinition {
|
|
9
|
+
validateInputValueInternal(value) {
|
|
10
|
+
return Array.isArray(value);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
exports.JSONArrayField = JSONArrayField;
|
|
14
|
+
/**
|
|
15
|
+
* EntityFieldDefinition for a Postgres column that may be a JS JSON array type.
|
|
16
|
+
* Does not do any validation.
|
|
17
|
+
*/
|
|
18
|
+
class MaybeJSONArrayField extends entity_1.EntityFieldDefinition {
|
|
19
|
+
validateInputValueInternal(_value) {
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.MaybeJSONArrayField = MaybeJSONArrayField;
|
|
24
|
+
/**
|
|
25
|
+
* EntityFieldDefinition for a Postgres BIGINT column.
|
|
26
|
+
*/
|
|
27
|
+
class BigIntField extends entity_1.EntityFieldDefinition {
|
|
28
|
+
validateInputValueInternal(value) {
|
|
29
|
+
return typeof value === 'string';
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.BigIntField = BigIntField;
|
|
33
|
+
//# sourceMappingURL=EntityFields.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EntityFields.js","sourceRoot":"","sources":["../src/EntityFields.ts"],"names":[],"mappings":";;;AAAA,yCAAqD;AAErD;;GAEG;AACH,MAAa,cAAe,SAAQ,8BAA4B;IACpD,0BAA0B,CAAC,KAAY;QAC/C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;CACF;AAJD,wCAIC;AAED;;;GAGG;AACH,MAAa,mBAAoB,SAAQ,8BAAkC;IAC/D,0BAA0B,CAAC,MAAW;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAJD,kDAIC;AAED;;GAEG;AACH,MAAa,WAAY,SAAQ,8BAA6B;IAClD,0BAA0B,CAAC,KAAa;QAChD,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;IACnC,CAAC;CACF;AAJD,kCAIC"}
|
|
@@ -4,12 +4,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const entity_1 = require("@expo/entity");
|
|
7
|
+
const EntityFields_1 = require("./EntityFields");
|
|
7
8
|
const wrapNativePostgresCallAsync_1 = __importDefault(require("./errors/wrapNativePostgresCallAsync"));
|
|
8
9
|
class PostgresEntityDatabaseAdapter extends entity_1.EntityDatabaseAdapter {
|
|
9
10
|
getFieldTransformerMap() {
|
|
10
11
|
return new Map([
|
|
11
12
|
[
|
|
12
|
-
|
|
13
|
+
EntityFields_1.JSONArrayField.name,
|
|
13
14
|
{
|
|
14
15
|
/**
|
|
15
16
|
* JSON array fields must be stringified before insertion using Knex.
|
|
@@ -19,7 +20,7 @@ class PostgresEntityDatabaseAdapter extends entity_1.EntityDatabaseAdapter {
|
|
|
19
20
|
},
|
|
20
21
|
],
|
|
21
22
|
[
|
|
22
|
-
|
|
23
|
+
EntityFields_1.MaybeJSONArrayField.name,
|
|
23
24
|
{
|
|
24
25
|
/**
|
|
25
26
|
* JSON array fields must be stringified before insertion using Knex.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PostgresEntityDatabaseAdapter.js","sourceRoot":"","sources":["../src/PostgresEntityDatabaseAdapter.ts"],"names":[],"mappings":";;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"PostgresEntityDatabaseAdapter.js","sourceRoot":"","sources":["../src/PostgresEntityDatabaseAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,4 +8,5 @@ export default class PostgresEntityQueryContextProvider extends EntityQueryConte
|
|
|
8
8
|
constructor(knexInstance: Knex);
|
|
9
9
|
protected getQueryInterface(): any;
|
|
10
10
|
protected createTransactionRunner<T>(): (transactionScope: (trx: any) => Promise<T>) => Promise<T>;
|
|
11
|
+
protected createNestedTransactionRunner<T>(outerQueryInterface: any): (transactionScope: (queryInterface: any) => Promise<T>) => Promise<T>;
|
|
11
12
|
}
|
|
@@ -15,6 +15,9 @@ class PostgresEntityQueryContextProvider extends entity_1.EntityQueryContextProv
|
|
|
15
15
|
createTransactionRunner() {
|
|
16
16
|
return (transactionScope) => this.knexInstance.transaction(transactionScope);
|
|
17
17
|
}
|
|
18
|
+
createNestedTransactionRunner(outerQueryInterface) {
|
|
19
|
+
return (transactionScope) => outerQueryInterface.transaction(transactionScope);
|
|
20
|
+
}
|
|
18
21
|
}
|
|
19
22
|
exports.default = PostgresEntityQueryContextProvider;
|
|
20
23
|
//# sourceMappingURL=PostgresEntityQueryContextProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PostgresEntityQueryContextProvider.js","sourceRoot":"","sources":["../src/PostgresEntityQueryContextProvider.ts"],"names":[],"mappings":";;AAAA,yCAA0D;AAG1D;;GAEG;AACH,MAAqB,kCAAmC,SAAQ,mCAA0B;IACxF,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;QAG/B,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAC/E,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"PostgresEntityQueryContextProvider.js","sourceRoot":"","sources":["../src/PostgresEntityQueryContextProvider.ts"],"names":[],"mappings":";;AAAA,yCAA0D;AAG1D;;GAEG;AACH,MAAqB,kCAAmC,SAAQ,mCAA0B;IACxF,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;QAG/B,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAC/E,CAAC;IAES,6BAA6B,CACrC,mBAAwB;QAExB,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAE,mBAA4B,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAC3F,CAAC;CACF;AApBD,qDAoBC"}
|
|
@@ -106,6 +106,17 @@ describe('postgres entity integration', () => {
|
|
|
106
106
|
expect(entity2.getField('maybeJsonArrayField')).toEqual({ hello: 'world' });
|
|
107
107
|
});
|
|
108
108
|
});
|
|
109
|
+
describe('BIGINT fields', () => {
|
|
110
|
+
it('supports BIGINT fields', async () => {
|
|
111
|
+
const vc1 = new entity_1.ViewerContext((0, createKnexIntegrationTestEntityCompanionProvider_1.createKnexIntegrationTestEntityCompanionProvider)(knexInstance));
|
|
112
|
+
let entity = await (0, results_1.enforceAsyncResult)(PostgresTestEntity_1.default.creator(vc1).setField('bigintField', '72057594037928038').createAsync());
|
|
113
|
+
expect(entity.getField('bigintField')).toEqual('72057594037928038');
|
|
114
|
+
entity = await (0, results_1.enforceAsyncResult)(PostgresTestEntity_1.default.updater(entity).setField('bigintField', '10').updateAsync());
|
|
115
|
+
expect(entity.getField('bigintField')).toEqual('10');
|
|
116
|
+
entity = await (0, results_1.enforceAsyncResult)(PostgresTestEntity_1.default.updater(entity).setField('bigintField', '-10').updateAsync());
|
|
117
|
+
expect(entity.getField('bigintField')).toEqual('-10');
|
|
118
|
+
});
|
|
119
|
+
});
|
|
109
120
|
describe('conjunction field equality loading', () => {
|
|
110
121
|
it('supports single fieldValue and multiple fieldValues', async () => {
|
|
111
122
|
const vc1 = new entity_1.ViewerContext((0, createKnexIntegrationTestEntityCompanionProvider_1.createKnexIntegrationTestEntityCompanionProvider)(knexInstance));
|
|
@@ -414,6 +425,7 @@ describe('postgres entity integration', () => {
|
|
|
414
425
|
it('calls callbacks correctly', async () => {
|
|
415
426
|
const vc1 = new entity_1.ViewerContext((0, createKnexIntegrationTestEntityCompanionProvider_1.createKnexIntegrationTestEntityCompanionProvider)(knexInstance));
|
|
416
427
|
let preCommitCallCount = 0;
|
|
428
|
+
let preCommitInnerCallCount = 0;
|
|
417
429
|
let postCommitCallCount = 0;
|
|
418
430
|
await vc1.runInTransactionForDatabaseAdaptorFlavorAsync('postgres', async (queryContext) => {
|
|
419
431
|
queryContext.appendPostCommitCallback(async () => {
|
|
@@ -422,6 +434,27 @@ describe('postgres entity integration', () => {
|
|
|
422
434
|
queryContext.appendPreCommitCallback(async () => {
|
|
423
435
|
preCommitCallCount++;
|
|
424
436
|
}, 0);
|
|
437
|
+
await queryContext.runInNestedTransactionAsync(async (innerQueryContext) => {
|
|
438
|
+
innerQueryContext.appendPostCommitCallback(async () => {
|
|
439
|
+
postCommitCallCount++;
|
|
440
|
+
});
|
|
441
|
+
innerQueryContext.appendPreCommitCallback(async () => {
|
|
442
|
+
preCommitInnerCallCount++;
|
|
443
|
+
}, 0);
|
|
444
|
+
});
|
|
445
|
+
// this one throws so its post commit shouldn't execute
|
|
446
|
+
try {
|
|
447
|
+
await queryContext.runInNestedTransactionAsync(async (innerQueryContext) => {
|
|
448
|
+
innerQueryContext.appendPostCommitCallback(async () => {
|
|
449
|
+
postCommitCallCount++;
|
|
450
|
+
});
|
|
451
|
+
innerQueryContext.appendPreCommitCallback(async () => {
|
|
452
|
+
preCommitInnerCallCount++;
|
|
453
|
+
throw Error('wat');
|
|
454
|
+
}, 0);
|
|
455
|
+
});
|
|
456
|
+
}
|
|
457
|
+
catch { }
|
|
425
458
|
});
|
|
426
459
|
await expect(vc1.runInTransactionForDatabaseAdaptorFlavorAsync('postgres', async (queryContext) => {
|
|
427
460
|
queryContext.appendPostCommitCallback(async () => {
|
|
@@ -433,7 +466,8 @@ describe('postgres entity integration', () => {
|
|
|
433
466
|
}, 0);
|
|
434
467
|
})).rejects.toThrowError('wat');
|
|
435
468
|
expect(preCommitCallCount).toBe(2);
|
|
436
|
-
expect(
|
|
469
|
+
expect(preCommitInnerCallCount).toBe(2);
|
|
470
|
+
expect(postCommitCallCount).toBe(2);
|
|
437
471
|
});
|
|
438
472
|
});
|
|
439
473
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PostgresEntityIntegration-test.js","sourceRoot":"","sources":["../../src/__integration-tests__/PostgresEntityIntegration-test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PostgresEntityIntegration-test.js","sourceRoot":"","sources":["../../src/__integration-tests__/PostgresEntityIntegration-test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,88 @@
|
|
|
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 knex_1 = require("knex");
|
|
8
|
+
const nullthrows_1 = __importDefault(require("nullthrows"));
|
|
9
|
+
const PostgresEntityQueryContextProvider_1 = __importDefault(require("../PostgresEntityQueryContextProvider"));
|
|
10
|
+
const PostgresUniqueTestEntity_1 = __importDefault(require("../testfixtures/PostgresUniqueTestEntity"));
|
|
11
|
+
const createKnexIntegrationTestEntityCompanionProvider_1 = require("../testfixtures/createKnexIntegrationTestEntityCompanionProvider");
|
|
12
|
+
describe(PostgresEntityQueryContextProvider_1.default, () => {
|
|
13
|
+
let knexInstance;
|
|
14
|
+
beforeAll(() => {
|
|
15
|
+
knexInstance = (0, knex_1.knex)({
|
|
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
|
+
beforeEach(async () => {
|
|
27
|
+
await PostgresUniqueTestEntity_1.default.createOrTruncatePostgresTable(knexInstance);
|
|
28
|
+
});
|
|
29
|
+
afterAll(async () => {
|
|
30
|
+
await PostgresUniqueTestEntity_1.default.dropPostgresTable(knexInstance);
|
|
31
|
+
await knexInstance.destroy();
|
|
32
|
+
});
|
|
33
|
+
it('supports nested transactions', async () => {
|
|
34
|
+
const vc1 = new entity_1.ViewerContext((0, createKnexIntegrationTestEntityCompanionProvider_1.createKnexIntegrationTestEntityCompanionProvider)(knexInstance));
|
|
35
|
+
await PostgresUniqueTestEntity_1.default.creator(vc1).setField('name', 'unique').enforceCreateAsync();
|
|
36
|
+
const id = (await PostgresUniqueTestEntity_1.default.creator(vc1).setField('name', 'wat').enforceCreateAsync()).getID();
|
|
37
|
+
await vc1.runInTransactionForDatabaseAdaptorFlavorAsync('postgres', async (queryContext) => {
|
|
38
|
+
const entity = await PostgresUniqueTestEntity_1.default.loader(vc1, queryContext)
|
|
39
|
+
.enforcing()
|
|
40
|
+
.loadByIDAsync(id);
|
|
41
|
+
await PostgresUniqueTestEntity_1.default.updater(entity, queryContext)
|
|
42
|
+
.setField('name', 'wat2')
|
|
43
|
+
.enforceUpdateAsync();
|
|
44
|
+
// ensure the outer transaction is not aborted due to postgres error in inner transaction,
|
|
45
|
+
// in this case the error triggered is a unique constraint violation
|
|
46
|
+
try {
|
|
47
|
+
await queryContext.runInNestedTransactionAsync(async (innerQueryContext) => {
|
|
48
|
+
const entity = await PostgresUniqueTestEntity_1.default.loader(vc1, innerQueryContext)
|
|
49
|
+
.enforcing()
|
|
50
|
+
.loadByIDAsync(id);
|
|
51
|
+
await PostgresUniqueTestEntity_1.default.updater(entity, innerQueryContext)
|
|
52
|
+
.setField('name', 'unique')
|
|
53
|
+
.enforceUpdateAsync();
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
catch { }
|
|
57
|
+
const entity2 = await PostgresUniqueTestEntity_1.default.loader(vc1, queryContext)
|
|
58
|
+
.enforcing()
|
|
59
|
+
.loadByIDAsync(id);
|
|
60
|
+
await PostgresUniqueTestEntity_1.default.updater(entity2, queryContext)
|
|
61
|
+
.setField('name', 'wat3')
|
|
62
|
+
.enforceUpdateAsync();
|
|
63
|
+
});
|
|
64
|
+
const entityLoaded = await PostgresUniqueTestEntity_1.default.loader(vc1).enforcing().loadByIDAsync(id);
|
|
65
|
+
expect(entityLoaded.getField('name')).toEqual('wat3');
|
|
66
|
+
});
|
|
67
|
+
it('supports multi-nested transactions', async () => {
|
|
68
|
+
const vc1 = new entity_1.ViewerContext((0, createKnexIntegrationTestEntityCompanionProvider_1.createKnexIntegrationTestEntityCompanionProvider)(knexInstance));
|
|
69
|
+
const id = (await PostgresUniqueTestEntity_1.default.creator(vc1).setField('name', 'wat').enforceCreateAsync()).getID();
|
|
70
|
+
await vc1.runInTransactionForDatabaseAdaptorFlavorAsync('postgres', async (queryContext) => {
|
|
71
|
+
await queryContext.runInNestedTransactionAsync(async (innerQueryContext) => {
|
|
72
|
+
await innerQueryContext.runInNestedTransactionAsync(async (innerQueryContex2) => {
|
|
73
|
+
await innerQueryContex2.runInNestedTransactionAsync(async (innerQueryContex3) => {
|
|
74
|
+
const entity = await PostgresUniqueTestEntity_1.default.loader(vc1, innerQueryContex3)
|
|
75
|
+
.enforcing()
|
|
76
|
+
.loadByIDAsync(id);
|
|
77
|
+
await PostgresUniqueTestEntity_1.default.updater(entity, innerQueryContex3)
|
|
78
|
+
.setField('name', 'wat3')
|
|
79
|
+
.enforceUpdateAsync();
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
const entityLoaded = await PostgresUniqueTestEntity_1.default.loader(vc1).enforcing().loadByIDAsync(id);
|
|
85
|
+
expect(entityLoaded.getField('name')).toEqual('wat3');
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
//# sourceMappingURL=PostgresEntityQueryContextProvider-test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PostgresEntityQueryContextProvider-test.js","sourceRoot":"","sources":["../../src/__integration-tests__/PostgresEntityQueryContextProvider-test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const entity_1 = require("@expo/entity");
|
|
4
|
+
const EntityFields_1 = require("../EntityFields");
|
|
5
|
+
(0, entity_1.describeFieldTestCase)(new EntityFields_1.JSONArrayField({ columnName: 'wat' }), [[[1, 2]], [['hello']]], [1, 'hello']);
|
|
6
|
+
(0, entity_1.describeFieldTestCase)(new EntityFields_1.MaybeJSONArrayField({ columnName: 'wat' }), [1, 'hello', [['hello']]], []);
|
|
7
|
+
(0, entity_1.describeFieldTestCase)(new EntityFields_1.BigIntField({ columnName: 'wat' }), ['123457682149816498126412896', '123', '-1', '-124147812641876482716841'], [1, false, -1, 1e6, {}]);
|
|
8
|
+
//# sourceMappingURL=EntityFields-test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EntityFields-test.js","sourceRoot":"","sources":["../../src/__tests__/EntityFields-test.ts"],"names":[],"mappings":";;AAAA,yCAAqD;AAErD,kDAAmF;AAEnF,IAAA,8BAAqB,EACnB,IAAI,6BAAc,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EACzC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,CAAQ,CAAC,EACrC,CAAC,CAAC,EAAE,OAAO,CAAC,CACb,CAAC;AACF,IAAA,8BAAqB,EACnB,IAAI,kCAAmB,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAC9C,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EACzB,EAAE,CACH,CAAC;AACF,IAAA,8BAAqB,EACnB,IAAI,0BAAW,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EACtC,CAAC,6BAA6B,EAAE,KAAK,EAAE,IAAI,EAAE,2BAA2B,CAAC,EACzE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CACxB,CAAC"}
|
package/build/index.d.ts
CHANGED
|
@@ -5,3 +5,4 @@
|
|
|
5
5
|
export { default as PostgresEntityDatabaseAdapter } from './PostgresEntityDatabaseAdapter';
|
|
6
6
|
export { default as PostgresEntityDatabaseAdapterProvider } from './PostgresEntityDatabaseAdapterProvider';
|
|
7
7
|
export { default as PostgresEntityQueryContextProvider } from './PostgresEntityQueryContextProvider';
|
|
8
|
+
export * from './EntityFields';
|
package/build/index.js
CHANGED
|
@@ -4,6 +4,20 @@
|
|
|
4
4
|
* @packageDocumentation
|
|
5
5
|
* @module @expo/entity-database-adapter-knex
|
|
6
6
|
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
19
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
20
|
+
};
|
|
7
21
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
8
22
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
9
23
|
};
|
|
@@ -15,4 +29,5 @@ var PostgresEntityDatabaseAdapterProvider_1 = require("./PostgresEntityDatabaseA
|
|
|
15
29
|
Object.defineProperty(exports, "PostgresEntityDatabaseAdapterProvider", { enumerable: true, get: function () { return __importDefault(PostgresEntityDatabaseAdapterProvider_1).default; } });
|
|
16
30
|
var PostgresEntityQueryContextProvider_1 = require("./PostgresEntityQueryContextProvider");
|
|
17
31
|
Object.defineProperty(exports, "PostgresEntityQueryContextProvider", { enumerable: true, get: function () { return __importDefault(PostgresEntityQueryContextProvider_1).default; } });
|
|
32
|
+
__exportStar(require("./EntityFields"), exports);
|
|
18
33
|
//# sourceMappingURL=index.js.map
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,iCAAiC;AACjC;;;GAGG
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,iCAAiC;AACjC;;;GAGG;;;;;;;;;;;;;;;;;;;;AAEH,iFAA2F;AAAlF,+JAAA,OAAO,OAAiC;AACjD,iGAA2G;AAAlG,+KAAA,OAAO,OAAyC;AACzD,2FAAqG;AAA5F,yKAAA,OAAO,OAAsC;AACtD,iDAA+B"}
|
|
@@ -14,6 +14,7 @@ declare type PostgresTestEntityFields = {
|
|
|
14
14
|
maybeJsonArrayField: string[] | {
|
|
15
15
|
hello: string;
|
|
16
16
|
} | null;
|
|
17
|
+
bigintField: string | null;
|
|
17
18
|
};
|
|
18
19
|
export default class PostgresTestEntity extends Entity<PostgresTestEntityFields, string, ViewerContext> {
|
|
19
20
|
static getCompanionDefinition(): EntityCompanionDefinition<PostgresTestEntityFields, string, ViewerContext, PostgresTestEntity, PostgresTestEntityPrivacyPolicy>;
|
|
@@ -2,17 +2,17 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.postgresTestEntityConfiguration = void 0;
|
|
4
4
|
const entity_1 = require("@expo/entity");
|
|
5
|
+
const EntityFields_1 = require("../EntityFields");
|
|
5
6
|
class PostgresTestEntity extends entity_1.Entity {
|
|
6
7
|
static getCompanionDefinition() {
|
|
7
8
|
return postgresTestEntityCompanionDefinition;
|
|
8
9
|
}
|
|
9
10
|
static async createOrTruncatePostgresTable(knex) {
|
|
10
|
-
await knex.raw('CREATE EXTENSION IF NOT EXISTS "uuid-ossp"'); // for uuid_generate_v4()
|
|
11
11
|
const tableName = this.getCompanionDefinition().entityConfiguration.tableName;
|
|
12
12
|
const hasTable = await knex.schema.hasTable(tableName);
|
|
13
13
|
if (!hasTable) {
|
|
14
14
|
await knex.schema.createTable(tableName, (table) => {
|
|
15
|
-
table.uuid('id').defaultTo(knex.raw('
|
|
15
|
+
table.uuid('id').defaultTo(knex.raw('gen_random_uuid()')).primary();
|
|
16
16
|
table.string('name');
|
|
17
17
|
table.boolean('has_a_dog');
|
|
18
18
|
table.boolean('has_a_cat');
|
|
@@ -21,6 +21,7 @@ class PostgresTestEntity extends entity_1.Entity {
|
|
|
21
21
|
table.jsonb('json_object_field');
|
|
22
22
|
table.dateTime('date_field', { useTz: true });
|
|
23
23
|
table.jsonb('maybe_json_array_field');
|
|
24
|
+
table.bigint('bigint_field');
|
|
24
25
|
});
|
|
25
26
|
}
|
|
26
27
|
await knex.into(tableName).truncate();
|
|
@@ -71,7 +72,7 @@ exports.postgresTestEntityConfiguration = new entity_1.EntityConfiguration({
|
|
|
71
72
|
stringArray: new entity_1.StringArrayField({
|
|
72
73
|
columnName: 'string_array',
|
|
73
74
|
}),
|
|
74
|
-
jsonArrayField: new
|
|
75
|
+
jsonArrayField: new EntityFields_1.JSONArrayField({
|
|
75
76
|
columnName: 'json_array_field',
|
|
76
77
|
}),
|
|
77
78
|
jsonObjectField: new entity_1.JSONObjectField({
|
|
@@ -80,9 +81,12 @@ exports.postgresTestEntityConfiguration = new entity_1.EntityConfiguration({
|
|
|
80
81
|
dateField: new entity_1.DateField({
|
|
81
82
|
columnName: 'date_field',
|
|
82
83
|
}),
|
|
83
|
-
maybeJsonArrayField: new
|
|
84
|
+
maybeJsonArrayField: new EntityFields_1.MaybeJSONArrayField({
|
|
84
85
|
columnName: 'maybe_json_array_field',
|
|
85
86
|
}),
|
|
87
|
+
bigintField: new EntityFields_1.BigIntField({
|
|
88
|
+
columnName: 'bigint_field',
|
|
89
|
+
}),
|
|
86
90
|
},
|
|
87
91
|
databaseAdapterFlavor: 'postgres',
|
|
88
92
|
cacheAdapterFlavor: 'redis',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PostgresTestEntity.js","sourceRoot":"","sources":["../../src/testfixtures/PostgresTestEntity.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"PostgresTestEntity.js","sourceRoot":"","sources":["../../src/testfixtures/PostgresTestEntity.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,12 +7,11 @@ class PostgresTriggerTestEntity extends entity_1.Entity {
|
|
|
7
7
|
return postgresTestEntityCompanionDefinition;
|
|
8
8
|
}
|
|
9
9
|
static async createOrTruncatePostgresTable(knex) {
|
|
10
|
-
await knex.raw('CREATE EXTENSION IF NOT EXISTS "uuid-ossp"'); // for uuid_generate_v4()
|
|
11
10
|
const tableName = this.getCompanionDefinition().entityConfiguration.tableName;
|
|
12
11
|
const hasTable = await knex.schema.hasTable(tableName);
|
|
13
12
|
if (!hasTable) {
|
|
14
13
|
await knex.schema.createTable(tableName, (table) => {
|
|
15
|
-
table.uuid('id').defaultTo(knex.raw('
|
|
14
|
+
table.uuid('id').defaultTo(knex.raw('gen_random_uuid()')).primary();
|
|
16
15
|
table.string('name');
|
|
17
16
|
});
|
|
18
17
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PostgresTriggerTestEntity.js","sourceRoot":"","sources":["../../src/testfixtures/PostgresTriggerTestEntity.ts"],"names":[],"mappings":";;;AAAA,yCAasB;AAQtB,MAAqB,yBAA0B,SAAQ,eAItD;IACC,MAAM,CAAC,sBAAsB;QAO3B,OAAO,qCAAqC,CAAC;IAC/C,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,IAAU;QAC1D,MAAM,
|
|
1
|
+
{"version":3,"file":"PostgresTriggerTestEntity.js","sourceRoot":"","sources":["../../src/testfixtures/PostgresTriggerTestEntity.ts"],"names":[],"mappings":";;;AAAA,yCAasB;AAQtB,MAAqB,yBAA0B,SAAQ,eAItD;IACC,MAAM,CAAC,sBAAsB;QAO3B,OAAO,qCAAqC,CAAC;IAC/C,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,IAAU;QAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC;QAC9E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACvD,IAAI,CAAC,QAAQ,EAAE;YACb,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;gBACjD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;gBACpE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACvB,CAAC,CAAC,CAAC;SACJ;QACD,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC;IACxC,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAU;QAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC;QAC9E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACvD,IAAI,QAAQ,EAAE;YACZ,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;SACxC;IACH,CAAC;CACF;AAlCD,4CAkCC;AAED,MAAM,sCAAuC,SAAQ,4BAKpD;IALD;;QAM8B,gBAAW,GAAG;YACxC,IAAI,qCAA4B,EAK7B;SACJ,CAAC;QAC0B,cAAS,GAAG;YACtC,IAAI,qCAA4B,EAK7B;SACJ,CAAC;QAC0B,gBAAW,GAAG;YACxC,IAAI,qCAA4B,EAK7B;SACJ,CAAC;QAC0B,gBAAW,GAAG;YACxC,IAAI,qCAA4B,EAK7B;SACJ,CAAC;IACJ,CAAC;CAAA;AAED,MAAM,yBAA0B,SAAQ,8BAKvC;IACC,YAAoB,SAAgD,EAAU,QAAgB;QAC5F,KAAK,EAAE,CAAC;QADU,cAAS,GAAT,SAAS,CAAuC;QAAU,aAAQ,GAAR,QAAQ,CAAQ;IAE9F,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,cAA6B,EAC7B,aAAiC,EACjC,MAAiC,EACjC,aAKC;QAED,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE;YACrD,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,sBAAsB,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;SACzE;IACH,CAAC;CACF;AAED,MAAM,yCAA0C,SAAQ,8CAKvD;IACC,YAAoB,SAAgD,EAAU,QAAgB;QAC5F,KAAK,EAAE,CAAC;QADU,cAAS,GAAT,SAAS,CAAuC;QAAU,aAAQ,GAAR,QAAQ,CAAQ;IAE9F,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,cAA6B,EAC7B,MAAiC;QAEjC,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE;YACrD,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,sBAAsB,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;SACzE;IACH,CAAC;CACF;AAEY,QAAA,+BAA+B,GAC1C,IAAI,4BAAmB,CAAkC;IACvD,OAAO,EAAE,IAAI;IACb,SAAS,EAAE,wBAAwB;IACnC,MAAM,EAAE;QACN,EAAE,EAAE,IAAI,kBAAS,CAAC;YAChB,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE,IAAI;SACZ,CAAC;QACF,IAAI,EAAE,IAAI,oBAAW,CAAC;YACpB,UAAU,EAAE,MAAM;SACnB,CAAC;KACH;IACD,qBAAqB,EAAE,UAAU;IACjC,kBAAkB,EAAE,OAAO;CAC5B,CAAC,CAAC;AAEL,MAAM,qCAAqC,GAAG,IAAI,kCAAyB,CAAC;IAC1E,WAAW,EAAE,yBAAyB;IACtC,mBAAmB,EAAE,uCAA+B;IACpD,kBAAkB,EAAE,sCAAsC;IAC1D,gBAAgB,EAAE,GAAG,EAAE,CAAC,CAAC;QACvB,YAAY,EAAE,CAAC,IAAI,yBAAyB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QACrE,WAAW,EAAE,CAAC,IAAI,yBAAyB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QACnE,YAAY,EAAE,CAAC,IAAI,yBAAyB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QACrE,WAAW,EAAE,CAAC,IAAI,yBAAyB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QACnE,YAAY,EAAE,CAAC,IAAI,yBAAyB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QACrE,WAAW,EAAE,CAAC,IAAI,yBAAyB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QACnE,SAAS,EAAE,CAAC,IAAI,yBAAyB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAC/D,QAAQ,EAAE,CAAC,IAAI,yBAAyB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC7D,WAAW,EAAE,CAAC,IAAI,yCAAyC,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;KACpF,CAAC;CACH,CAAC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { AlwaysAllowPrivacyPolicyRule, EntityPrivacyPolicy, ViewerContext, EntityConfiguration, EntityCompanionDefinition, Entity } from '@expo/entity';
|
|
2
|
+
import { Knex } from 'knex';
|
|
3
|
+
declare type PostgresUniqueTestEntityFields = {
|
|
4
|
+
id: string;
|
|
5
|
+
name: string | null;
|
|
6
|
+
};
|
|
7
|
+
export default class PostgresUniqueTestEntity extends Entity<PostgresUniqueTestEntityFields, string, ViewerContext> {
|
|
8
|
+
static getCompanionDefinition(): EntityCompanionDefinition<PostgresUniqueTestEntityFields, string, ViewerContext, PostgresUniqueTestEntity, PostgresUniqueTestEntityPrivacyPolicy>;
|
|
9
|
+
static createOrTruncatePostgresTable(knex: Knex): Promise<void>;
|
|
10
|
+
static dropPostgresTable(knex: Knex): Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
declare class PostgresUniqueTestEntityPrivacyPolicy extends EntityPrivacyPolicy<PostgresUniqueTestEntityFields, string, ViewerContext, PostgresUniqueTestEntity> {
|
|
13
|
+
protected readonly createRules: AlwaysAllowPrivacyPolicyRule<PostgresUniqueTestEntityFields, string, ViewerContext, PostgresUniqueTestEntity, keyof PostgresUniqueTestEntityFields>[];
|
|
14
|
+
protected readonly readRules: AlwaysAllowPrivacyPolicyRule<PostgresUniqueTestEntityFields, string, ViewerContext, PostgresUniqueTestEntity, keyof PostgresUniqueTestEntityFields>[];
|
|
15
|
+
protected readonly updateRules: AlwaysAllowPrivacyPolicyRule<PostgresUniqueTestEntityFields, string, ViewerContext, PostgresUniqueTestEntity, keyof PostgresUniqueTestEntityFields>[];
|
|
16
|
+
protected readonly deleteRules: AlwaysAllowPrivacyPolicyRule<PostgresUniqueTestEntityFields, string, ViewerContext, PostgresUniqueTestEntity, keyof PostgresUniqueTestEntityFields>[];
|
|
17
|
+
}
|
|
18
|
+
export declare const postgresTestEntityConfiguration: EntityConfiguration<PostgresUniqueTestEntityFields>;
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.postgresTestEntityConfiguration = void 0;
|
|
4
|
+
const entity_1 = require("@expo/entity");
|
|
5
|
+
class PostgresUniqueTestEntity extends entity_1.Entity {
|
|
6
|
+
static getCompanionDefinition() {
|
|
7
|
+
return postgresTestEntityCompanionDefinition;
|
|
8
|
+
}
|
|
9
|
+
static async createOrTruncatePostgresTable(knex) {
|
|
10
|
+
const tableName = this.getCompanionDefinition().entityConfiguration.tableName;
|
|
11
|
+
const hasTable = await knex.schema.hasTable(tableName);
|
|
12
|
+
if (!hasTable) {
|
|
13
|
+
await knex.schema.createTable(tableName, (table) => {
|
|
14
|
+
table.uuid('id').defaultTo(knex.raw('gen_random_uuid()')).primary();
|
|
15
|
+
table.string('name').unique();
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
await knex.into(tableName).truncate();
|
|
19
|
+
}
|
|
20
|
+
static async dropPostgresTable(knex) {
|
|
21
|
+
const tableName = this.getCompanionDefinition().entityConfiguration.tableName;
|
|
22
|
+
const hasTable = await knex.schema.hasTable(tableName);
|
|
23
|
+
if (hasTable) {
|
|
24
|
+
await knex.schema.dropTable(tableName);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.default = PostgresUniqueTestEntity;
|
|
29
|
+
class PostgresUniqueTestEntityPrivacyPolicy extends entity_1.EntityPrivacyPolicy {
|
|
30
|
+
constructor() {
|
|
31
|
+
super(...arguments);
|
|
32
|
+
this.createRules = [
|
|
33
|
+
new entity_1.AlwaysAllowPrivacyPolicyRule(),
|
|
34
|
+
];
|
|
35
|
+
this.readRules = [
|
|
36
|
+
new entity_1.AlwaysAllowPrivacyPolicyRule(),
|
|
37
|
+
];
|
|
38
|
+
this.updateRules = [
|
|
39
|
+
new entity_1.AlwaysAllowPrivacyPolicyRule(),
|
|
40
|
+
];
|
|
41
|
+
this.deleteRules = [
|
|
42
|
+
new entity_1.AlwaysAllowPrivacyPolicyRule(),
|
|
43
|
+
];
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
exports.postgresTestEntityConfiguration = new entity_1.EntityConfiguration({
|
|
47
|
+
idField: 'id',
|
|
48
|
+
tableName: 'postgres_test_entities',
|
|
49
|
+
schema: {
|
|
50
|
+
id: new entity_1.UUIDField({
|
|
51
|
+
columnName: 'id',
|
|
52
|
+
cache: true,
|
|
53
|
+
}),
|
|
54
|
+
name: new entity_1.StringField({
|
|
55
|
+
columnName: 'name',
|
|
56
|
+
}),
|
|
57
|
+
},
|
|
58
|
+
databaseAdapterFlavor: 'postgres',
|
|
59
|
+
cacheAdapterFlavor: 'redis',
|
|
60
|
+
});
|
|
61
|
+
const postgresTestEntityCompanionDefinition = new entity_1.EntityCompanionDefinition({
|
|
62
|
+
entityClass: PostgresUniqueTestEntity,
|
|
63
|
+
entityConfiguration: exports.postgresTestEntityConfiguration,
|
|
64
|
+
privacyPolicyClass: PostgresUniqueTestEntityPrivacyPolicy,
|
|
65
|
+
});
|
|
66
|
+
//# sourceMappingURL=PostgresUniqueTestEntity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PostgresUniqueTestEntity.js","sourceRoot":"","sources":["../../src/testfixtures/PostgresUniqueTestEntity.ts"],"names":[],"mappings":";;;AAAA,yCASsB;AAQtB,MAAqB,wBAAyB,SAAQ,eAIrD;IACC,MAAM,CAAC,sBAAsB;QAO3B,OAAO,qCAAqC,CAAC;IAC/C,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,IAAU;QAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC;QAC9E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACvD,IAAI,CAAC,QAAQ,EAAE;YACb,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;gBACjD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;gBACpE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC;YAChC,CAAC,CAAC,CAAC;SACJ;QACD,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC;IACxC,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAU;QAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC;QAC9E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACvD,IAAI,QAAQ,EAAE;YACZ,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;SACxC;IACH,CAAC;CACF;AAlCD,2CAkCC;AAED,MAAM,qCAAsC,SAAQ,4BAKnD;IALD;;QAM8B,gBAAW,GAAG;YACxC,IAAI,qCAA4B,EAK7B;SACJ,CAAC;QAC0B,cAAS,GAAG;YACtC,IAAI,qCAA4B,EAK7B;SACJ,CAAC;QAC0B,gBAAW,GAAG;YACxC,IAAI,qCAA4B,EAK7B;SACJ,CAAC;QAC0B,gBAAW,GAAG;YACxC,IAAI,qCAA4B,EAK7B;SACJ,CAAC;IACJ,CAAC;CAAA;AAEY,QAAA,+BAA+B,GAC1C,IAAI,4BAAmB,CAAiC;IACtD,OAAO,EAAE,IAAI;IACb,SAAS,EAAE,wBAAwB;IACnC,MAAM,EAAE;QACN,EAAE,EAAE,IAAI,kBAAS,CAAC;YAChB,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE,IAAI;SACZ,CAAC;QACF,IAAI,EAAE,IAAI,oBAAW,CAAC;YACpB,UAAU,EAAE,MAAM;SACnB,CAAC;KACH;IACD,qBAAqB,EAAE,UAAU;IACjC,kBAAkB,EAAE,OAAO;CAC5B,CAAC,CAAC;AAEL,MAAM,qCAAqC,GAAG,IAAI,kCAAyB,CAAC;IAC1E,WAAW,EAAE,wBAAwB;IACrC,mBAAmB,EAAE,uCAA+B;IACpD,kBAAkB,EAAE,qCAAqC;CAC1D,CAAC,CAAC"}
|
|
@@ -7,12 +7,11 @@ class PostgresValidatorTestEntity extends entity_1.Entity {
|
|
|
7
7
|
return postgresTestEntityCompanionDefinition;
|
|
8
8
|
}
|
|
9
9
|
static async createOrTruncatePostgresTable(knex) {
|
|
10
|
-
await knex.raw('CREATE EXTENSION IF NOT EXISTS "uuid-ossp"'); // for uuid_generate_v4()
|
|
11
10
|
const tableName = this.getCompanionDefinition().entityConfiguration.tableName;
|
|
12
11
|
const hasTable = await knex.schema.hasTable(tableName);
|
|
13
12
|
if (!hasTable) {
|
|
14
13
|
await knex.schema.createTable(tableName, (table) => {
|
|
15
|
-
table.uuid('id').defaultTo(knex.raw('
|
|
14
|
+
table.uuid('id').defaultTo(knex.raw('gen_random_uuid()')).primary();
|
|
16
15
|
table.string('name');
|
|
17
16
|
});
|
|
18
17
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PostgresValidatorTestEntity.js","sourceRoot":"","sources":["../../src/testfixtures/PostgresValidatorTestEntity.ts"],"names":[],"mappings":";;;AAAA,yCAYsB;AAQtB,MAAqB,2BAA4B,SAAQ,eAIxD;IACC,MAAM,CAAC,sBAAsB;QAO3B,OAAO,qCAAqC,CAAC;IAC/C,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,IAAU;QAC1D,MAAM,
|
|
1
|
+
{"version":3,"file":"PostgresValidatorTestEntity.js","sourceRoot":"","sources":["../../src/testfixtures/PostgresValidatorTestEntity.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@expo/entity-database-adapter-knex",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.28.0",
|
|
4
4
|
"description": "Knex database adapter for @expo/entity",
|
|
5
5
|
"files": [
|
|
6
6
|
"build",
|
|
@@ -33,8 +33,8 @@
|
|
|
33
33
|
"knex": "^1.0.2"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
|
-
"@expo/entity": "^0.
|
|
36
|
+
"@expo/entity": "^0.28.0",
|
|
37
37
|
"pg": "^8.7.1"
|
|
38
38
|
},
|
|
39
|
-
"gitHead": "
|
|
39
|
+
"gitHead": "dbf1e030394d1f2bdf58d858cb455be9136a1b14"
|
|
40
40
|
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { EntityFieldDefinition } from '@expo/entity';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* EntityFieldDefinition for a Postres column with a JS JSON array type.
|
|
5
|
+
*/
|
|
6
|
+
export class JSONArrayField extends EntityFieldDefinition<any[]> {
|
|
7
|
+
protected validateInputValueInternal(value: any[]): boolean {
|
|
8
|
+
return Array.isArray(value);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* EntityFieldDefinition for a Postgres column that may be a JS JSON array type.
|
|
14
|
+
* Does not do any validation.
|
|
15
|
+
*/
|
|
16
|
+
export class MaybeJSONArrayField extends EntityFieldDefinition<any | any[]> {
|
|
17
|
+
protected validateInputValueInternal(_value: any): boolean {
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* EntityFieldDefinition for a Postgres BIGINT column.
|
|
24
|
+
*/
|
|
25
|
+
export class BigIntField extends EntityFieldDefinition<string> {
|
|
26
|
+
protected validateInputValueInternal(value: string): boolean {
|
|
27
|
+
return typeof value === 'string';
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -2,8 +2,6 @@ import {
|
|
|
2
2
|
EntityDatabaseAdapter,
|
|
3
3
|
FieldTransformerMap,
|
|
4
4
|
FieldTransformer,
|
|
5
|
-
JSONArrayField,
|
|
6
|
-
MaybeJSONArrayField,
|
|
7
5
|
TableQuerySelectionModifiers,
|
|
8
6
|
TableFieldSingleValueEqualityCondition,
|
|
9
7
|
TableFieldMultiValueEqualityCondition,
|
|
@@ -11,6 +9,7 @@ import {
|
|
|
11
9
|
} from '@expo/entity';
|
|
12
10
|
import { Knex } from 'knex';
|
|
13
11
|
|
|
12
|
+
import { JSONArrayField, MaybeJSONArrayField } from './EntityFields';
|
|
14
13
|
import wrapNativePostgresCallAsync from './errors/wrapNativePostgresCallAsync';
|
|
15
14
|
|
|
16
15
|
export default class PostgresEntityDatabaseAdapter<TFields> extends EntityDatabaseAdapter<TFields> {
|
|
@@ -18,4 +18,10 @@ export default class PostgresEntityQueryContextProvider extends EntityQueryConte
|
|
|
18
18
|
) => Promise<T> {
|
|
19
19
|
return (transactionScope) => this.knexInstance.transaction(transactionScope);
|
|
20
20
|
}
|
|
21
|
+
|
|
22
|
+
protected createNestedTransactionRunner<T>(
|
|
23
|
+
outerQueryInterface: any
|
|
24
|
+
): (transactionScope: (queryInterface: any) => Promise<T>) => Promise<T> {
|
|
25
|
+
return (transactionScope) => (outerQueryInterface as Knex).transaction(transactionScope);
|
|
26
|
+
}
|
|
21
27
|
}
|
|
@@ -157,6 +157,27 @@ describe('postgres entity integration', () => {
|
|
|
157
157
|
});
|
|
158
158
|
});
|
|
159
159
|
|
|
160
|
+
describe('BIGINT fields', () => {
|
|
161
|
+
it('supports BIGINT fields', async () => {
|
|
162
|
+
const vc1 = new ViewerContext(createKnexIntegrationTestEntityCompanionProvider(knexInstance));
|
|
163
|
+
|
|
164
|
+
let entity = await enforceAsyncResult(
|
|
165
|
+
PostgresTestEntity.creator(vc1).setField('bigintField', '72057594037928038').createAsync()
|
|
166
|
+
);
|
|
167
|
+
expect(entity.getField('bigintField')).toEqual('72057594037928038');
|
|
168
|
+
|
|
169
|
+
entity = await enforceAsyncResult(
|
|
170
|
+
PostgresTestEntity.updater(entity).setField('bigintField', '10').updateAsync()
|
|
171
|
+
);
|
|
172
|
+
expect(entity.getField('bigintField')).toEqual('10');
|
|
173
|
+
|
|
174
|
+
entity = await enforceAsyncResult(
|
|
175
|
+
PostgresTestEntity.updater(entity).setField('bigintField', '-10').updateAsync()
|
|
176
|
+
);
|
|
177
|
+
expect(entity.getField('bigintField')).toEqual('-10');
|
|
178
|
+
});
|
|
179
|
+
});
|
|
180
|
+
|
|
160
181
|
describe('conjunction field equality loading', () => {
|
|
161
182
|
it('supports single fieldValue and multiple fieldValues', async () => {
|
|
162
183
|
const vc1 = new ViewerContext(createKnexIntegrationTestEntityCompanionProvider(knexInstance));
|
|
@@ -615,6 +636,7 @@ describe('postgres entity integration', () => {
|
|
|
615
636
|
const vc1 = new ViewerContext(createKnexIntegrationTestEntityCompanionProvider(knexInstance));
|
|
616
637
|
|
|
617
638
|
let preCommitCallCount = 0;
|
|
639
|
+
let preCommitInnerCallCount = 0;
|
|
618
640
|
let postCommitCallCount = 0;
|
|
619
641
|
|
|
620
642
|
await vc1.runInTransactionForDatabaseAdaptorFlavorAsync('postgres', async (queryContext) => {
|
|
@@ -624,6 +646,28 @@ describe('postgres entity integration', () => {
|
|
|
624
646
|
queryContext.appendPreCommitCallback(async () => {
|
|
625
647
|
preCommitCallCount++;
|
|
626
648
|
}, 0);
|
|
649
|
+
|
|
650
|
+
await queryContext.runInNestedTransactionAsync(async (innerQueryContext) => {
|
|
651
|
+
innerQueryContext.appendPostCommitCallback(async () => {
|
|
652
|
+
postCommitCallCount++;
|
|
653
|
+
});
|
|
654
|
+
innerQueryContext.appendPreCommitCallback(async () => {
|
|
655
|
+
preCommitInnerCallCount++;
|
|
656
|
+
}, 0);
|
|
657
|
+
});
|
|
658
|
+
|
|
659
|
+
// this one throws so its post commit shouldn't execute
|
|
660
|
+
try {
|
|
661
|
+
await queryContext.runInNestedTransactionAsync(async (innerQueryContext) => {
|
|
662
|
+
innerQueryContext.appendPostCommitCallback(async () => {
|
|
663
|
+
postCommitCallCount++;
|
|
664
|
+
});
|
|
665
|
+
innerQueryContext.appendPreCommitCallback(async () => {
|
|
666
|
+
preCommitInnerCallCount++;
|
|
667
|
+
throw Error('wat');
|
|
668
|
+
}, 0);
|
|
669
|
+
});
|
|
670
|
+
} catch {}
|
|
627
671
|
});
|
|
628
672
|
|
|
629
673
|
await expect(
|
|
@@ -639,7 +683,8 @@ describe('postgres entity integration', () => {
|
|
|
639
683
|
).rejects.toThrowError('wat');
|
|
640
684
|
|
|
641
685
|
expect(preCommitCallCount).toBe(2);
|
|
642
|
-
expect(
|
|
686
|
+
expect(preCommitInnerCallCount).toBe(2);
|
|
687
|
+
expect(postCommitCallCount).toBe(2);
|
|
643
688
|
});
|
|
644
689
|
});
|
|
645
690
|
});
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { ViewerContext } from '@expo/entity';
|
|
2
|
+
import { knex, Knex } from 'knex';
|
|
3
|
+
import nullthrows from 'nullthrows';
|
|
4
|
+
|
|
5
|
+
import PostgresEntityQueryContextProvider from '../PostgresEntityQueryContextProvider';
|
|
6
|
+
import PostgresUniqueTestEntity from '../testfixtures/PostgresUniqueTestEntity';
|
|
7
|
+
import { createKnexIntegrationTestEntityCompanionProvider } from '../testfixtures/createKnexIntegrationTestEntityCompanionProvider';
|
|
8
|
+
|
|
9
|
+
describe(PostgresEntityQueryContextProvider, () => {
|
|
10
|
+
let knexInstance: Knex;
|
|
11
|
+
|
|
12
|
+
beforeAll(() => {
|
|
13
|
+
knexInstance = knex({
|
|
14
|
+
client: 'pg',
|
|
15
|
+
connection: {
|
|
16
|
+
user: nullthrows(process.env['PGUSER']),
|
|
17
|
+
password: nullthrows(process.env['PGPASSWORD']),
|
|
18
|
+
host: 'localhost',
|
|
19
|
+
port: parseInt(nullthrows(process.env['PGPORT']), 10),
|
|
20
|
+
database: nullthrows(process.env['PGDATABASE']),
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
beforeEach(async () => {
|
|
26
|
+
await PostgresUniqueTestEntity.createOrTruncatePostgresTable(knexInstance);
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
afterAll(async () => {
|
|
30
|
+
await PostgresUniqueTestEntity.dropPostgresTable(knexInstance);
|
|
31
|
+
await knexInstance.destroy();
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
it('supports nested transactions', async () => {
|
|
35
|
+
const vc1 = new ViewerContext(createKnexIntegrationTestEntityCompanionProvider(knexInstance));
|
|
36
|
+
|
|
37
|
+
await PostgresUniqueTestEntity.creator(vc1).setField('name', 'unique').enforceCreateAsync();
|
|
38
|
+
|
|
39
|
+
const id = (
|
|
40
|
+
await PostgresUniqueTestEntity.creator(vc1).setField('name', 'wat').enforceCreateAsync()
|
|
41
|
+
).getID();
|
|
42
|
+
|
|
43
|
+
await vc1.runInTransactionForDatabaseAdaptorFlavorAsync('postgres', async (queryContext) => {
|
|
44
|
+
const entity = await PostgresUniqueTestEntity.loader(vc1, queryContext)
|
|
45
|
+
.enforcing()
|
|
46
|
+
.loadByIDAsync(id);
|
|
47
|
+
await PostgresUniqueTestEntity.updater(entity, queryContext)
|
|
48
|
+
.setField('name', 'wat2')
|
|
49
|
+
.enforceUpdateAsync();
|
|
50
|
+
|
|
51
|
+
// ensure the outer transaction is not aborted due to postgres error in inner transaction,
|
|
52
|
+
// in this case the error triggered is a unique constraint violation
|
|
53
|
+
try {
|
|
54
|
+
await queryContext.runInNestedTransactionAsync(async (innerQueryContext) => {
|
|
55
|
+
const entity = await PostgresUniqueTestEntity.loader(vc1, innerQueryContext)
|
|
56
|
+
.enforcing()
|
|
57
|
+
.loadByIDAsync(id);
|
|
58
|
+
await PostgresUniqueTestEntity.updater(entity, innerQueryContext)
|
|
59
|
+
.setField('name', 'unique')
|
|
60
|
+
.enforceUpdateAsync();
|
|
61
|
+
});
|
|
62
|
+
} catch {}
|
|
63
|
+
|
|
64
|
+
const entity2 = await PostgresUniqueTestEntity.loader(vc1, queryContext)
|
|
65
|
+
.enforcing()
|
|
66
|
+
.loadByIDAsync(id);
|
|
67
|
+
await PostgresUniqueTestEntity.updater(entity2, queryContext)
|
|
68
|
+
.setField('name', 'wat3')
|
|
69
|
+
.enforceUpdateAsync();
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
const entityLoaded = await PostgresUniqueTestEntity.loader(vc1).enforcing().loadByIDAsync(id);
|
|
73
|
+
expect(entityLoaded.getField('name')).toEqual('wat3');
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
it('supports multi-nested transactions', async () => {
|
|
77
|
+
const vc1 = new ViewerContext(createKnexIntegrationTestEntityCompanionProvider(knexInstance));
|
|
78
|
+
|
|
79
|
+
const id = (
|
|
80
|
+
await PostgresUniqueTestEntity.creator(vc1).setField('name', 'wat').enforceCreateAsync()
|
|
81
|
+
).getID();
|
|
82
|
+
|
|
83
|
+
await vc1.runInTransactionForDatabaseAdaptorFlavorAsync('postgres', async (queryContext) => {
|
|
84
|
+
await queryContext.runInNestedTransactionAsync(async (innerQueryContext) => {
|
|
85
|
+
await innerQueryContext.runInNestedTransactionAsync(async (innerQueryContex2) => {
|
|
86
|
+
await innerQueryContex2.runInNestedTransactionAsync(async (innerQueryContex3) => {
|
|
87
|
+
const entity = await PostgresUniqueTestEntity.loader(vc1, innerQueryContex3)
|
|
88
|
+
.enforcing()
|
|
89
|
+
.loadByIDAsync(id);
|
|
90
|
+
await PostgresUniqueTestEntity.updater(entity, innerQueryContex3)
|
|
91
|
+
.setField('name', 'wat3')
|
|
92
|
+
.enforceUpdateAsync();
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
const entityLoaded = await PostgresUniqueTestEntity.loader(vc1).enforcing().loadByIDAsync(id);
|
|
99
|
+
expect(entityLoaded.getField('name')).toEqual('wat3');
|
|
100
|
+
});
|
|
101
|
+
});
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { describeFieldTestCase } from '@expo/entity';
|
|
2
|
+
|
|
3
|
+
import { BigIntField, JSONArrayField, MaybeJSONArrayField } from '../EntityFields';
|
|
4
|
+
|
|
5
|
+
describeFieldTestCase(
|
|
6
|
+
new JSONArrayField({ columnName: 'wat' }),
|
|
7
|
+
[[[1, 2]] as any, [['hello']] as any],
|
|
8
|
+
[1, 'hello']
|
|
9
|
+
);
|
|
10
|
+
describeFieldTestCase(
|
|
11
|
+
new MaybeJSONArrayField({ columnName: 'wat' }),
|
|
12
|
+
[1, 'hello', [['hello']]],
|
|
13
|
+
[]
|
|
14
|
+
);
|
|
15
|
+
describeFieldTestCase(
|
|
16
|
+
new BigIntField({ columnName: 'wat' }),
|
|
17
|
+
['123457682149816498126412896', '123', '-1', '-124147812641876482716841'],
|
|
18
|
+
[1, false, -1, 1e6, {}]
|
|
19
|
+
);
|
package/src/index.ts
CHANGED
|
@@ -7,3 +7,4 @@
|
|
|
7
7
|
export { default as PostgresEntityDatabaseAdapter } from './PostgresEntityDatabaseAdapter';
|
|
8
8
|
export { default as PostgresEntityDatabaseAdapterProvider } from './PostgresEntityDatabaseAdapterProvider';
|
|
9
9
|
export { default as PostgresEntityQueryContextProvider } from './PostgresEntityQueryContextProvider';
|
|
10
|
+
export * from './EntityFields';
|
|
@@ -6,16 +6,16 @@ import {
|
|
|
6
6
|
StringField,
|
|
7
7
|
BooleanField,
|
|
8
8
|
StringArrayField,
|
|
9
|
-
JSONArrayField,
|
|
10
9
|
JSONObjectField,
|
|
11
10
|
DateField,
|
|
12
|
-
MaybeJSONArrayField,
|
|
13
11
|
EntityConfiguration,
|
|
14
12
|
EntityCompanionDefinition,
|
|
15
13
|
Entity,
|
|
16
14
|
} from '@expo/entity';
|
|
17
15
|
import { Knex } from 'knex';
|
|
18
16
|
|
|
17
|
+
import { BigIntField, JSONArrayField, MaybeJSONArrayField } from '../EntityFields';
|
|
18
|
+
|
|
19
19
|
type PostgresTestEntityFields = {
|
|
20
20
|
id: string;
|
|
21
21
|
name: string | null;
|
|
@@ -28,6 +28,7 @@ type PostgresTestEntityFields = {
|
|
|
28
28
|
} | null;
|
|
29
29
|
dateField: Date | null;
|
|
30
30
|
maybeJsonArrayField: string[] | { hello: string } | null;
|
|
31
|
+
bigintField: string | null;
|
|
31
32
|
};
|
|
32
33
|
|
|
33
34
|
export default class PostgresTestEntity extends Entity<
|
|
@@ -46,13 +47,11 @@ export default class PostgresTestEntity extends Entity<
|
|
|
46
47
|
}
|
|
47
48
|
|
|
48
49
|
public static async createOrTruncatePostgresTable(knex: Knex): Promise<void> {
|
|
49
|
-
await knex.raw('CREATE EXTENSION IF NOT EXISTS "uuid-ossp"'); // for uuid_generate_v4()
|
|
50
|
-
|
|
51
50
|
const tableName = this.getCompanionDefinition().entityConfiguration.tableName;
|
|
52
51
|
const hasTable = await knex.schema.hasTable(tableName);
|
|
53
52
|
if (!hasTable) {
|
|
54
53
|
await knex.schema.createTable(tableName, (table) => {
|
|
55
|
-
table.uuid('id').defaultTo(knex.raw('
|
|
54
|
+
table.uuid('id').defaultTo(knex.raw('gen_random_uuid()')).primary();
|
|
56
55
|
table.string('name');
|
|
57
56
|
table.boolean('has_a_dog');
|
|
58
57
|
table.boolean('has_a_cat');
|
|
@@ -61,6 +60,7 @@ export default class PostgresTestEntity extends Entity<
|
|
|
61
60
|
table.jsonb('json_object_field');
|
|
62
61
|
table.dateTime('date_field', { useTz: true });
|
|
63
62
|
table.jsonb('maybe_json_array_field');
|
|
63
|
+
table.bigint('bigint_field');
|
|
64
64
|
});
|
|
65
65
|
}
|
|
66
66
|
await knex.into(tableName).truncate();
|
|
@@ -147,6 +147,9 @@ export const postgresTestEntityConfiguration = new EntityConfiguration<PostgresT
|
|
|
147
147
|
maybeJsonArrayField: new MaybeJSONArrayField({
|
|
148
148
|
columnName: 'maybe_json_array_field',
|
|
149
149
|
}),
|
|
150
|
+
bigintField: new BigIntField({
|
|
151
|
+
columnName: 'bigint_field',
|
|
152
|
+
}),
|
|
150
153
|
},
|
|
151
154
|
databaseAdapterFlavor: 'postgres',
|
|
152
155
|
cacheAdapterFlavor: 'redis',
|
|
@@ -35,13 +35,11 @@ export default class PostgresTriggerTestEntity extends Entity<
|
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
public static async createOrTruncatePostgresTable(knex: Knex): Promise<void> {
|
|
38
|
-
await knex.raw('CREATE EXTENSION IF NOT EXISTS "uuid-ossp"'); // for uuid_generate_v4()
|
|
39
|
-
|
|
40
38
|
const tableName = this.getCompanionDefinition().entityConfiguration.tableName;
|
|
41
39
|
const hasTable = await knex.schema.hasTable(tableName);
|
|
42
40
|
if (!hasTable) {
|
|
43
41
|
await knex.schema.createTable(tableName, (table) => {
|
|
44
|
-
table.uuid('id').defaultTo(knex.raw('
|
|
42
|
+
table.uuid('id').defaultTo(knex.raw('gen_random_uuid()')).primary();
|
|
45
43
|
table.string('name');
|
|
46
44
|
});
|
|
47
45
|
}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import {
|
|
2
|
+
AlwaysAllowPrivacyPolicyRule,
|
|
3
|
+
EntityPrivacyPolicy,
|
|
4
|
+
ViewerContext,
|
|
5
|
+
UUIDField,
|
|
6
|
+
StringField,
|
|
7
|
+
EntityConfiguration,
|
|
8
|
+
EntityCompanionDefinition,
|
|
9
|
+
Entity,
|
|
10
|
+
} from '@expo/entity';
|
|
11
|
+
import { Knex } from 'knex';
|
|
12
|
+
|
|
13
|
+
type PostgresUniqueTestEntityFields = {
|
|
14
|
+
id: string;
|
|
15
|
+
name: string | null;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export default class PostgresUniqueTestEntity extends Entity<
|
|
19
|
+
PostgresUniqueTestEntityFields,
|
|
20
|
+
string,
|
|
21
|
+
ViewerContext
|
|
22
|
+
> {
|
|
23
|
+
static getCompanionDefinition(): EntityCompanionDefinition<
|
|
24
|
+
PostgresUniqueTestEntityFields,
|
|
25
|
+
string,
|
|
26
|
+
ViewerContext,
|
|
27
|
+
PostgresUniqueTestEntity,
|
|
28
|
+
PostgresUniqueTestEntityPrivacyPolicy
|
|
29
|
+
> {
|
|
30
|
+
return postgresTestEntityCompanionDefinition;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
public static async createOrTruncatePostgresTable(knex: Knex): Promise<void> {
|
|
34
|
+
const tableName = this.getCompanionDefinition().entityConfiguration.tableName;
|
|
35
|
+
const hasTable = await knex.schema.hasTable(tableName);
|
|
36
|
+
if (!hasTable) {
|
|
37
|
+
await knex.schema.createTable(tableName, (table) => {
|
|
38
|
+
table.uuid('id').defaultTo(knex.raw('gen_random_uuid()')).primary();
|
|
39
|
+
table.string('name').unique();
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
await knex.into(tableName).truncate();
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
public static async dropPostgresTable(knex: Knex): Promise<void> {
|
|
46
|
+
const tableName = this.getCompanionDefinition().entityConfiguration.tableName;
|
|
47
|
+
const hasTable = await knex.schema.hasTable(tableName);
|
|
48
|
+
if (hasTable) {
|
|
49
|
+
await knex.schema.dropTable(tableName);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
class PostgresUniqueTestEntityPrivacyPolicy extends EntityPrivacyPolicy<
|
|
55
|
+
PostgresUniqueTestEntityFields,
|
|
56
|
+
string,
|
|
57
|
+
ViewerContext,
|
|
58
|
+
PostgresUniqueTestEntity
|
|
59
|
+
> {
|
|
60
|
+
protected override readonly createRules = [
|
|
61
|
+
new AlwaysAllowPrivacyPolicyRule<
|
|
62
|
+
PostgresUniqueTestEntityFields,
|
|
63
|
+
string,
|
|
64
|
+
ViewerContext,
|
|
65
|
+
PostgresUniqueTestEntity
|
|
66
|
+
>(),
|
|
67
|
+
];
|
|
68
|
+
protected override readonly readRules = [
|
|
69
|
+
new AlwaysAllowPrivacyPolicyRule<
|
|
70
|
+
PostgresUniqueTestEntityFields,
|
|
71
|
+
string,
|
|
72
|
+
ViewerContext,
|
|
73
|
+
PostgresUniqueTestEntity
|
|
74
|
+
>(),
|
|
75
|
+
];
|
|
76
|
+
protected override readonly updateRules = [
|
|
77
|
+
new AlwaysAllowPrivacyPolicyRule<
|
|
78
|
+
PostgresUniqueTestEntityFields,
|
|
79
|
+
string,
|
|
80
|
+
ViewerContext,
|
|
81
|
+
PostgresUniqueTestEntity
|
|
82
|
+
>(),
|
|
83
|
+
];
|
|
84
|
+
protected override readonly deleteRules = [
|
|
85
|
+
new AlwaysAllowPrivacyPolicyRule<
|
|
86
|
+
PostgresUniqueTestEntityFields,
|
|
87
|
+
string,
|
|
88
|
+
ViewerContext,
|
|
89
|
+
PostgresUniqueTestEntity
|
|
90
|
+
>(),
|
|
91
|
+
];
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export const postgresTestEntityConfiguration =
|
|
95
|
+
new EntityConfiguration<PostgresUniqueTestEntityFields>({
|
|
96
|
+
idField: 'id',
|
|
97
|
+
tableName: 'postgres_test_entities',
|
|
98
|
+
schema: {
|
|
99
|
+
id: new UUIDField({
|
|
100
|
+
columnName: 'id',
|
|
101
|
+
cache: true,
|
|
102
|
+
}),
|
|
103
|
+
name: new StringField({
|
|
104
|
+
columnName: 'name',
|
|
105
|
+
}),
|
|
106
|
+
},
|
|
107
|
+
databaseAdapterFlavor: 'postgres',
|
|
108
|
+
cacheAdapterFlavor: 'redis',
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
const postgresTestEntityCompanionDefinition = new EntityCompanionDefinition({
|
|
112
|
+
entityClass: PostgresUniqueTestEntity,
|
|
113
|
+
entityConfiguration: postgresTestEntityConfiguration,
|
|
114
|
+
privacyPolicyClass: PostgresUniqueTestEntityPrivacyPolicy,
|
|
115
|
+
});
|
|
@@ -34,13 +34,11 @@ export default class PostgresValidatorTestEntity extends Entity<
|
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
public static async createOrTruncatePostgresTable(knex: Knex): Promise<void> {
|
|
37
|
-
await knex.raw('CREATE EXTENSION IF NOT EXISTS "uuid-ossp"'); // for uuid_generate_v4()
|
|
38
|
-
|
|
39
37
|
const tableName = this.getCompanionDefinition().entityConfiguration.tableName;
|
|
40
38
|
const hasTable = await knex.schema.hasTable(tableName);
|
|
41
39
|
if (!hasTable) {
|
|
42
40
|
await knex.schema.createTable(tableName, (table) => {
|
|
43
|
-
table.uuid('id').defaultTo(knex.raw('
|
|
41
|
+
table.uuid('id').defaultTo(knex.raw('gen_random_uuid()')).primary();
|
|
44
42
|
table.string('name');
|
|
45
43
|
});
|
|
46
44
|
}
|