@contember/engine-system-api 1.3.0-alpha.7 → 1.3.0-alpha.8

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 (67) hide show
  1. package/dist/src/SystemContainer.d.ts +5 -1
  2. package/dist/src/SystemContainer.d.ts.map +1 -1
  3. package/dist/src/SystemContainer.js +3 -1
  4. package/dist/src/SystemContainer.js.map +1 -1
  5. package/dist/src/bin/runMigrations.js +4 -1
  6. package/dist/src/bin/runMigrations.js.map +1 -1
  7. package/dist/src/index.d.ts +1 -1
  8. package/dist/src/index.d.ts.map +1 -1
  9. package/dist/src/index.js +2 -1
  10. package/dist/src/index.js.map +1 -1
  11. package/dist/src/migrations/2022-10-03-110000-table-on-delete.d.ts.map +1 -1
  12. package/dist/src/migrations/2022-10-03-110000-table-on-delete.js +17 -12
  13. package/dist/src/migrations/2022-10-03-110000-table-on-delete.js.map +1 -1
  14. package/dist/src/migrations/runner.d.ts +3 -1
  15. package/dist/src/migrations/runner.d.ts.map +1 -1
  16. package/dist/src/migrations/runner.js +6 -1
  17. package/dist/src/migrations/runner.js.map +1 -1
  18. package/dist/src/migrations/types.d.ts +2 -0
  19. package/dist/src/migrations/types.d.ts.map +1 -1
  20. package/dist/src/model/index.d.ts +1 -0
  21. package/dist/src/model/index.d.ts.map +1 -1
  22. package/dist/src/model/index.js +1 -0
  23. package/dist/src/model/index.js.map +1 -1
  24. package/dist/src/model/metadata/ResolvedDatabaseMetadata.d.ts +13 -0
  25. package/dist/src/model/metadata/ResolvedDatabaseMetadata.d.ts.map +1 -0
  26. package/dist/src/model/metadata/ResolvedDatabaseMetadata.js +42 -0
  27. package/dist/src/model/metadata/ResolvedDatabaseMetadata.js.map +1 -0
  28. package/dist/src/model/metadata/SchemaDatabaseMetadataResolver.d.ts +8 -0
  29. package/dist/src/model/metadata/SchemaDatabaseMetadataResolver.d.ts.map +1 -0
  30. package/dist/src/model/metadata/SchemaDatabaseMetadataResolver.js +92 -0
  31. package/dist/src/model/metadata/SchemaDatabaseMetadataResolver.js.map +1 -0
  32. package/dist/src/model/metadata/SchemaDatabaseMetadataResolverStore.d.ts +17 -0
  33. package/dist/src/model/metadata/SchemaDatabaseMetadataResolverStore.d.ts.map +1 -0
  34. package/dist/src/model/metadata/SchemaDatabaseMetadataResolverStore.js +33 -0
  35. package/dist/src/model/metadata/SchemaDatabaseMetadataResolverStore.js.map +1 -0
  36. package/dist/src/model/metadata/index.d.ts +4 -0
  37. package/dist/src/model/metadata/index.d.ts.map +1 -0
  38. package/dist/src/model/metadata/index.js +22 -0
  39. package/dist/src/model/metadata/index.js.map +1 -0
  40. package/dist/src/model/migrations/ProjectMigrator.d.ts +3 -1
  41. package/dist/src/model/migrations/ProjectMigrator.d.ts.map +1 -1
  42. package/dist/src/model/migrations/ProjectMigrator.js +13 -5
  43. package/dist/src/model/migrations/ProjectMigrator.js.map +1 -1
  44. package/dist/src/tsconfig.tsbuildinfo +1 -1
  45. package/dist/tests/cases/migrations/2020-05-06-150000-composed-primary.test.js +2 -0
  46. package/dist/tests/cases/migrations/2020-05-06-150000-composed-primary.test.js.map +1 -1
  47. package/dist/tests/cases/migrations/2020-06-01-103000-event-trigger-perf.test.js +2 -0
  48. package/dist/tests/cases/migrations/2020-06-01-103000-event-trigger-perf.test.js.map +1 -1
  49. package/dist/tests/cases/migrations/2022-10-03-110000-table-on-delete.test.js +5 -2
  50. package/dist/tests/cases/migrations/2022-10-03-110000-table-on-delete.test.js.map +1 -1
  51. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  52. package/package.json +13 -13
  53. package/src/SystemContainer.ts +8 -3
  54. package/src/bin/runMigrations.ts +8 -1
  55. package/src/index.ts +1 -0
  56. package/src/migrations/2022-10-03-110000-table-on-delete.ts +18 -19
  57. package/src/migrations/runner.ts +7 -1
  58. package/src/migrations/types.ts +2 -0
  59. package/src/model/index.ts +1 -0
  60. package/src/model/metadata/ResolvedDatabaseMetadata.ts +54 -0
  61. package/src/model/metadata/SchemaDatabaseMetadataResolver.ts +136 -0
  62. package/src/model/metadata/SchemaDatabaseMetadataResolverStore.ts +41 -0
  63. package/src/model/metadata/index.ts +3 -0
  64. package/src/model/migrations/ProjectMigrator.ts +18 -4
  65. package/tests/cases/migrations/2020-05-06-150000-composed-primary.test.ts +2 -0
  66. package/tests/cases/migrations/2020-06-01-103000-event-trigger-perf.test.ts +2 -0
  67. package/tests/cases/migrations/2022-10-03-110000-table-on-delete.test.ts +6 -3
@@ -1,7 +1,7 @@
1
1
  import { AccessEvaluator, Authorizator } from '@contember/authorization';
2
2
  import { Builder, Container } from '@contember/dic';
3
3
  import { MigrationDescriber, ModificationHandlerFactory, SchemaDiffer, SchemaMigrator } from '@contember/schema-migrations';
4
- import { EventResponseBuilder, ExecutedMigrationsResolver, IdentityFetcher, MigrationAlterer, ProjectMigrator, ProjectTruncateExecutor, SchemaVersionBuilder } from './model';
4
+ import { EventResponseBuilder, ExecutedMigrationsResolver, IdentityFetcher, MigrationAlterer, MigrationsDatabaseMetadataResolverStoreFactory, ProjectMigrator, ProjectTruncateExecutor, SchemaDatabaseMetadataResolver, SchemaVersionBuilder } from './model';
5
5
  import { UuidProvider } from './utils';
6
6
  import { EventsQueryResolver, ExecutedMigrationsQueryResolver, MigrateMutationResolver, MigrationAlterMutationResolver, ResolverFactory, StagesQueryResolver, SystemResolverContextFactory, TruncateMutationResolver } from './resolvers';
7
7
  import { EventOldValuesResolver } from './resolvers/types';
@@ -39,6 +39,10 @@ export declare class SystemContainerFactory {
39
39
  schemaDiffer: SchemaDiffer;
40
40
  } & {
41
41
  migrationDescriber: MigrationDescriber;
42
+ } & {
43
+ databaseMetadataResolver: SchemaDatabaseMetadataResolver;
44
+ } & {
45
+ migrationsDatabaseMetadataResolverStoreFactory: MigrationsDatabaseMetadataResolverStoreFactory;
42
46
  } & {
43
47
  projectMigrator: ProjectMigrator;
44
48
  } & {
@@ -1 +1 @@
1
- {"version":3,"file":"SystemContainer.d.ts","sourceRoot":"","sources":["../../src/SystemContainer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACxE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,EACN,kBAAkB,EAClB,0BAA0B,EAC1B,YAAY,EACZ,cAAc,EACd,MAAM,8BAA8B,CAAA;AACrC,OAAO,EACN,oBAAoB,EACpB,0BAA0B,EAC1B,eAAe,EACf,gBAAgB,EAEhB,eAAe,EACf,uBAAuB,EACvB,oBAAoB,EACpB,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EACN,mBAAmB,EACnB,+BAA+B,EAC/B,uBAAuB,EACvB,8BAA8B,EAC9B,eAAe,EACf,mBAAmB,EACnB,4BAA4B,EAC5B,wBAAwB,EACxB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAE1D,MAAM,WAAW,eAAe;IAC/B,sBAAsB,EAAE,eAAe,CAAA;IACvC,YAAY,EAAE,YAAY,CAAA;IAC1B,sBAAsB,EAAE,4BAA4B,CAAA;IACpD,oBAAoB,EAAE,oBAAoB,CAAA;CAC1C;AAED,aAAK,IAAI,GAAG;IACX,eAAe,EAAE,eAAe,CAAA;CAChC,CAAA;AAED,qBAAa,sBAAsB;IAEjC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,0BAA0B;gBAD1B,SAAS,EAAE,YAAY,EACvB,0BAA0B,EAAE,0BAA0B;IAIjE,MAAM,CAAC,SAAS,EAAE,IAAI,GAAG,SAAS,CAAC,eAAe,CAAC;IAUnD,aAAa,CAAC,EAAE,eAAe,EAAE,EAAE,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiD9C"}
1
+ {"version":3,"file":"SystemContainer.d.ts","sourceRoot":"","sources":["../../src/SystemContainer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACxE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,EACN,kBAAkB,EAClB,0BAA0B,EAC1B,YAAY,EACZ,cAAc,EACd,MAAM,8BAA8B,CAAA;AACrC,OAAO,EACN,oBAAoB,EACpB,0BAA0B,EAC1B,eAAe,EACf,gBAAgB,EAChB,8CAA8C,EAE9C,eAAe,EACf,uBAAuB,EAAE,8BAA8B,EACvD,oBAAoB,EACpB,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EACN,mBAAmB,EACnB,+BAA+B,EAC/B,uBAAuB,EACvB,8BAA8B,EAC9B,eAAe,EACf,mBAAmB,EACnB,4BAA4B,EAC5B,wBAAwB,EACxB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAE1D,MAAM,WAAW,eAAe;IAC/B,sBAAsB,EAAE,eAAe,CAAA;IACvC,YAAY,EAAE,YAAY,CAAA;IAC1B,sBAAsB,EAAE,4BAA4B,CAAA;IACpD,oBAAoB,EAAE,oBAAoB,CAAA;CAC1C;AAED,aAAK,IAAI,GAAG;IACX,eAAe,EAAE,eAAe,CAAA;CAChC,CAAA;AAED,qBAAa,sBAAsB;IAEjC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,0BAA0B;gBAD1B,SAAS,EAAE,YAAY,EACvB,0BAA0B,EAAE,0BAA0B;IAIjE,MAAM,CAAC,SAAS,EAAE,IAAI,GAAG,SAAS,CAAC,eAAe,CAAC;IAUnD,aAAa,CAAC,EAAE,eAAe,EAAE,EAAE,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqD9C"}
@@ -29,7 +29,9 @@ class SystemContainerFactory {
29
29
  .addService('authorizator', ({ accessEvaluator }) => new authorization_1.Authorizator.Default(accessEvaluator))
30
30
  .addService('schemaDiffer', ({ schemaMigrator }) => new schema_migrations_1.SchemaDiffer(schemaMigrator))
31
31
  .addService('migrationDescriber', ({ modificationHandlerFactory }) => new schema_migrations_1.MigrationDescriber(modificationHandlerFactory))
32
- .addService('projectMigrator', ({ migrationDescriber, schemaVersionBuilder, executedMigrationsResolver }) => new model_1.ProjectMigrator(migrationDescriber, schemaVersionBuilder, executedMigrationsResolver))
32
+ .addService('databaseMetadataResolver', () => new model_1.SchemaDatabaseMetadataResolver())
33
+ .addService('migrationsDatabaseMetadataResolverStoreFactory', ({ databaseMetadataResolver }) => new model_1.MigrationsDatabaseMetadataResolverStoreFactory(databaseMetadataResolver))
34
+ .addService('projectMigrator', ({ migrationDescriber, schemaVersionBuilder, executedMigrationsResolver, migrationsDatabaseMetadataResolverStoreFactory }) => new model_1.ProjectMigrator(migrationDescriber, schemaVersionBuilder, executedMigrationsResolver, migrationsDatabaseMetadataResolverStoreFactory))
33
35
  .addService('projectTruncateExecutor', () => new model_1.ProjectTruncateExecutor())
34
36
  .addService('migrationAlterer', () => new model_1.MigrationAlterer())
35
37
  .addService('eventResponseBuilder', ({ identityFetcher }) => new model_1.EventResponseBuilder(identityFetcher))
@@ -1 +1 @@
1
- {"version":3,"file":"SystemContainer.js","sourceRoot":"","sources":["../../src/SystemContainer.ts"],"names":[],"mappings":";;;AAAA,4DAAwE;AACxE,wCAAmD;AACnD,oEAKqC;AACrC,mCASgB;AAEhB,2CASoB;AACpB,6CAA0D;AAa1D,MAAa,sBAAsB;IAClC,YACkB,SAAuB,EACvB,0BAAsD;QADtD,cAAS,GAAT,SAAS,CAAc;QACvB,+BAA0B,GAA1B,0BAA0B,CAA4B;IAExE,CAAC;IAEM,MAAM,CAAC,SAAe;QAC5B,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;aAClC,KAAK,EAAE;aACP,IAAI,CACJ,wBAAwB,EACxB,cAAc,EACd,wBAAwB,EACxB,sBAAsB,CACtB,CAAA;IACH,CAAC;IACM,aAAa,CAAC,EAAE,eAAe,EAAQ;QAC7C,OAAO,IAAI,aAAO,CAAC,EAAE,CAAC;aACpB,UAAU,CAAC,WAAW,EAAE,GAAG,EAAE,CAC7B,IAAI,CAAC,SAAS,CAAC;aACf,UAAU,CAAC,4BAA4B,EAAE,GAAG,EAAE,CAC9C,IAAI,CAAC,0BAA0B,CAAC;aAChC,UAAU,CAAC,iBAAiB,EAAE,GAAG,EAAE,CACnC,eAAe,CAAC;aAChB,UAAU,CAAC,gBAAgB,EAAE,CAAC,EAAE,0BAA0B,EAAE,EAAE,EAAE,CAChE,IAAI,kCAAc,CAAC,0BAA0B,CAAC,CAAC;aAC/C,UAAU,CAAC,4BAA4B,EAAE,CAAC,EAAE,EAAE,EAAE,CAChD,IAAI,kCAA0B,EAAE,CAAC;aACjC,UAAU,CAAC,sBAAsB,EAAE,CAAC,EAAE,0BAA0B,EAAE,cAAc,EAAE,EAAE,EAAE,CACtF,IAAI,4BAAoB,CAAC,0BAA0B,EAAE,cAAc,CAAC,CAAC;aACrE,UAAU,CAAC,iBAAiB,EAAE,CAAC,EAAE,EAAE,EAAE,CACrC,IAAI,+BAAe,CAAC,mBAAmB,CAAC,IAAI,0BAAkB,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;aAC3E,UAAU,CAAC,cAAc,EAAE,CAAC,EAAE,eAAe,EAAE,EAAgB,EAAE,CACjE,IAAI,4BAAY,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;aAC1C,UAAU,CAAC,cAAc,EAAE,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAClD,IAAI,gCAAY,CAAC,cAAc,CAAC,CAAC;aACjC,UAAU,CAAC,oBAAoB,EAAE,CAAC,EAAE,0BAA0B,EAAE,EAAE,EAAE,CACpE,IAAI,sCAAkB,CAAC,0BAA0B,CAAC,CAAC;aACnD,UAAU,CAAC,iBAAiB,EAAE,CAAC,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,EAAE,EAAE,CAC3G,IAAI,uBAAe,CAAC,kBAAkB,EAAE,oBAAoB,EAAE,0BAA0B,CAAC,CAAC;aAC1F,UAAU,CAAC,yBAAyB,EAAE,GAAG,EAAE,CAC3C,IAAI,+BAAuB,EAAE,CAAC;aAC9B,UAAU,CAAC,kBAAkB,EAAE,GAAG,EAAE,CACpC,IAAI,wBAAgB,EAAE,CAAC;aACvB,UAAU,CAAC,sBAAsB,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE,CAC3D,IAAI,4BAAoB,CAAC,eAAe,CAAC,CAAC;aAC1C,UAAU,CAAC,qBAAqB,EAAE,GAAG,EAAE,CACvC,IAAI,+BAAmB,EAAE,CAAC;aAC1B,UAAU,CAAC,iCAAiC,EAAE,GAAG,EAAE,CACnD,IAAI,2CAA+B,EAAE,CAAC;aACtC,UAAU,CAAC,yBAAyB,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE,CAC9D,IAAI,mCAAuB,CAAC,eAAe,CAAC,CAAC;aAC7C,UAAU,CAAC,0BAA0B,EAAE,CAAC,EAAE,uBAAuB,EAAE,EAAE,EAAE,CACvE,IAAI,oCAAwB,CAAC,uBAAuB,CAAC,CAAC;aACtD,UAAU,CAAC,gCAAgC,EAAE,CAAC,EAAE,gBAAgB,EAAE,EAAE,EAAE,CACtE,IAAI,0CAA8B,CAAC,gBAAgB,CAAC,CAAC;aACrD,UAAU,CAAC,qBAAqB,EAAE,CAAC,EAAE,oBAAoB,EAAE,EAAE,EAAE,CAC/D,IAAI,+BAAmB,CAAC,oBAAoB,CAAC,CAAC;aAC9C,UAAU,CAAC,wBAAwB,EAAE,GAAG,EAAE,CAC1C,IAAI,8BAAsB,EAAE,CAAC;aAC7B,UAAU,CAAC,wBAAwB,EAAE,CAAC,EAAE,mBAAmB,EAAE,+BAA+B,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,8BAA8B,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,EAAE,EAAE,CAClO,IAAI,2BAAe,CAAC,mBAAmB,EAAE,+BAA+B,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,8BAA8B,EAAE,mBAAmB,EAAE,sBAAsB,CAAC,CAAC;aAC1M,UAAU,CAAC,wBAAwB,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAC1D,IAAI,wCAA4B,CAAC,YAAY,CAAC,CAAC,CAAA;IAClD,CAAC;CACD;AAlED,wDAkEC"}
1
+ {"version":3,"file":"SystemContainer.js","sourceRoot":"","sources":["../../src/SystemContainer.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ const migrations_1 = require("../migrations");
4
4
  const model_1 = require("../model");
5
5
  const database_1 = require("@contember/database");
6
6
  const logger_1 = require("@contember/logger");
7
+ const schema_utils_1 = require("@contember/schema-utils");
7
8
  (async () => {
8
9
  const dbConfig = {
9
10
  database: process.env.PGDATABASE,
@@ -20,7 +21,9 @@ const logger_1 = require("@contember/logger");
20
21
  },
21
22
  }), { db: dbConfig, slug: 'test', stages: [] }, 'system', {
22
23
  buildSchema: () => Promise.resolve(model_1.emptyVersionedSchema),
23
- }, {});
24
+ }, {}, {
25
+ resolveMetadata: () => Promise.resolve(schema_utils_1.dummySchemaDatabaseMetadata),
26
+ });
24
27
  // eslint-disable-next-line no-console
25
28
  await migrationsRunner.run((0, logger_1.createLogger)(new logger_1.PrettyPrintLoggerHandler(process.stderr)));
26
29
  })().catch(e => {
@@ -1 +1 @@
1
- {"version":3,"file":"runMigrations.js","sourceRoot":"","sources":["../../../src/bin/runMigrations.ts"],"names":[],"mappings":";;AAAA,8CAAsD;AACtD,oCAA6F;AAC7F,kDAAgD;AAChD,8CAEC;AAAA,CAAC,KAAK,IAAI,EAAE;IACZ,MAAM,QAAQ,GAAG;QAChB,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,UAAoB;QAC1C,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,MAAgB;QAClC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,UAAoB;QAC1C,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,MAAgB;QAClC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;KAC5D,CAAA;IACD,sCAAsC;IACtC,MAAM,UAAU,GAAG,qBAAU,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;IAC/E,MAAM,gBAAgB,GAAG,IAAI,mCAAsB,CAClD,IAAI,8BAAsB,CAAC,QAAQ,EAAE,UAAU,EAAE;QAChD,IAAI,EAAE,GAAG,EAAE;YACV,MAAM,IAAI,KAAK,EAAE,CAAA;QAClB,CAAC;KACD,CAAC,EACF,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAC1C,QAAQ,EACR;QACC,WAAW,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,4BAAoB,CAAC;KACrB,EACpC,EAAE,CACF,CAAA;IACD,sCAAsC;IACtC,MAAM,gBAAgB,CAAC,GAAG,CAAC,IAAA,qBAAY,EAAC,IAAI,iCAAwB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AACvF,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IACd,sCAAsC;IACtC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAChB,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"runMigrations.js","sourceRoot":"","sources":["../../../src/bin/runMigrations.ts"],"names":[],"mappings":";;AAAA,8CAAsD;AACtD,oCAA6F;AAC7F,kDAAgD;AAChD,8CAA0E;AAI1E,0DAAsE;AAEtE,CAAC,KAAK,IAAI,EAAE;IACX,MAAM,QAAQ,GAAG;QAChB,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,UAAoB;QAC1C,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,MAAgB;QAClC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,UAAoB;QAC1C,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,MAAgB;QAClC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;KAC5D,CAAA;IACD,sCAAsC;IACtC,MAAM,UAAU,GAAG,qBAAU,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;IAC/E,MAAM,gBAAgB,GAAG,IAAI,mCAAsB,CAClD,IAAI,8BAAsB,CAAC,QAAQ,EAAE,UAAU,EAAE;QAChD,IAAI,EAAE,GAAG,EAAE;YACV,MAAM,IAAI,KAAK,EAAE,CAAA;QAClB,CAAC;KACD,CAAC,EACF,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAC1C,QAAQ,EACR;QACC,WAAW,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,4BAAoB,CAAC;KACrB,EACpC,EAAE,EACF;QACC,eAAe,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,0CAA2B,CAAC;KACtB,CAC9C,CAAA;IACD,sCAAsC;IACtC,MAAM,gBAAgB,CAAC,GAAG,CAAC,IAAA,qBAAY,EAAC,IAAI,iCAAwB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AACvF,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IACd,sCAAsC;IACtC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAChB,CAAC,CAAC,CAAA"}
@@ -1,6 +1,6 @@
1
1
  export { SchemaMigrator, MigrationsResolver } from '@contember/schema-migrations';
2
2
  export { typeDefs, devTypeDefs, Schema } from './schema';
3
- export { DatabaseContext, DatabaseContextFactory, Command, formatSchemaName, getJunctionTables, Identity, LatestTransactionIdByStageQuery, ProjectInitializer, ProjectMigrator, SchemaVersionBuilder, Stage, StageBySlugQuery, StageCreator, StagesQuery, VersionedSchema, } from './model';
3
+ export { DatabaseContext, DatabaseContextFactory, Command, formatSchemaName, getJunctionTables, Identity, LatestTransactionIdByStageQuery, ProjectInitializer, ProjectMigrator, SchemaDatabaseMetadataResolver, SchemaVersionBuilder, Stage, StageBySlugQuery, StageCreator, StagesQuery, VersionedSchema, } from './model';
4
4
  export * from './SystemContainer';
5
5
  export * from './resolvers';
6
6
  export * from './types';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AAEjF,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAExD,OAAO,EACN,eAAe,EACf,sBAAsB,EACtB,OAAO,EACP,gBAAgB,EAChB,iBAAiB,EACjB,QAAQ,EACR,+BAA+B,EAC/B,kBAAkB,EAClB,eAAe,EACf,oBAAoB,EACpB,KAAK,EACL,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,eAAe,GACf,MAAM,SAAS,CAAA;AAChB,cAAc,mBAAmB,CAAA;AACjC,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,cAAc,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AAEjF,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAExD,OAAO,EACN,eAAe,EACf,sBAAsB,EACtB,OAAO,EACP,gBAAgB,EAChB,iBAAiB,EACjB,QAAQ,EACR,+BAA+B,EAC/B,kBAAkB,EAClB,eAAe,EACf,8BAA8B,EAC9B,oBAAoB,EACpB,KAAK,EACL,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,eAAe,GACf,MAAM,SAAS,CAAA;AAChB,cAAc,mBAAmB,CAAA;AACjC,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,cAAc,CAAA"}
package/dist/src/index.js CHANGED
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.StagesQuery = exports.StageCreator = exports.StageBySlugQuery = exports.SchemaVersionBuilder = exports.ProjectMigrator = exports.ProjectInitializer = exports.LatestTransactionIdByStageQuery = exports.Identity = exports.getJunctionTables = exports.formatSchemaName = exports.DatabaseContextFactory = exports.Schema = exports.devTypeDefs = exports.typeDefs = exports.MigrationsResolver = exports.SchemaMigrator = void 0;
17
+ exports.StagesQuery = exports.StageCreator = exports.StageBySlugQuery = exports.SchemaVersionBuilder = exports.SchemaDatabaseMetadataResolver = exports.ProjectMigrator = exports.ProjectInitializer = exports.LatestTransactionIdByStageQuery = exports.Identity = exports.getJunctionTables = exports.formatSchemaName = exports.DatabaseContextFactory = exports.Schema = exports.devTypeDefs = exports.typeDefs = exports.MigrationsResolver = exports.SchemaMigrator = void 0;
18
18
  var schema_migrations_1 = require("@contember/schema-migrations");
19
19
  Object.defineProperty(exports, "SchemaMigrator", { enumerable: true, get: function () { return schema_migrations_1.SchemaMigrator; } });
20
20
  Object.defineProperty(exports, "MigrationsResolver", { enumerable: true, get: function () { return schema_migrations_1.MigrationsResolver; } });
@@ -30,6 +30,7 @@ Object.defineProperty(exports, "Identity", { enumerable: true, get: function ()
30
30
  Object.defineProperty(exports, "LatestTransactionIdByStageQuery", { enumerable: true, get: function () { return model_1.LatestTransactionIdByStageQuery; } });
31
31
  Object.defineProperty(exports, "ProjectInitializer", { enumerable: true, get: function () { return model_1.ProjectInitializer; } });
32
32
  Object.defineProperty(exports, "ProjectMigrator", { enumerable: true, get: function () { return model_1.ProjectMigrator; } });
33
+ Object.defineProperty(exports, "SchemaDatabaseMetadataResolver", { enumerable: true, get: function () { return model_1.SchemaDatabaseMetadataResolver; } });
33
34
  Object.defineProperty(exports, "SchemaVersionBuilder", { enumerable: true, get: function () { return model_1.SchemaVersionBuilder; } });
34
35
  Object.defineProperty(exports, "StageBySlugQuery", { enumerable: true, get: function () { return model_1.StageBySlugQuery; } });
35
36
  Object.defineProperty(exports, "StageCreator", { enumerable: true, get: function () { return model_1.StageCreator; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,kEAAiF;AAAxE,mHAAA,cAAc,OAAA;AAAE,uHAAA,kBAAkB,OAAA;AAE3C,mCAAwD;AAA/C,kGAAA,QAAQ,OAAA;AAAE,qGAAA,WAAW,OAAA;AAAE,gGAAA,MAAM,OAAA;AAEtC,iCAgBgB;AAdf,+GAAA,sBAAsB,OAAA;AAEtB,yGAAA,gBAAgB,OAAA;AAChB,0GAAA,iBAAiB,OAAA;AACjB,iGAAA,QAAQ,OAAA;AACR,wHAAA,+BAA+B,OAAA;AAC/B,2GAAA,kBAAkB,OAAA;AAClB,wGAAA,eAAe,OAAA;AACf,6GAAA,oBAAoB,OAAA;AAEpB,yGAAA,gBAAgB,OAAA;AAChB,qGAAA,YAAY,OAAA;AACZ,oGAAA,WAAW,OAAA;AAGZ,oDAAiC;AACjC,8CAA2B;AAC3B,0CAAuB;AACvB,0CAAuB;AACvB,+CAA4B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,kEAAiF;AAAxE,mHAAA,cAAc,OAAA;AAAE,uHAAA,kBAAkB,OAAA;AAE3C,mCAAwD;AAA/C,kGAAA,QAAQ,OAAA;AAAE,qGAAA,WAAW,OAAA;AAAE,gGAAA,MAAM,OAAA;AAEtC,iCAiBgB;AAff,+GAAA,sBAAsB,OAAA;AAEtB,yGAAA,gBAAgB,OAAA;AAChB,0GAAA,iBAAiB,OAAA;AACjB,iGAAA,QAAQ,OAAA;AACR,wHAAA,+BAA+B,OAAA;AAC/B,2GAAA,kBAAkB,OAAA;AAClB,wGAAA,eAAe,OAAA;AACf,uHAAA,8BAA8B,OAAA;AAC9B,6GAAA,oBAAoB,OAAA;AAEpB,yGAAA,gBAAgB,OAAA;AAChB,qGAAA,YAAY,OAAA;AACZ,oGAAA,WAAW,OAAA;AAGZ,oDAAiC;AACjC,8CAA2B;AAC3B,0CAAuB;AACvB,0CAAuB;AACvB,+CAA4B"}
@@ -1 +1 @@
1
- {"version":3,"file":"2022-10-03-110000-table-on-delete.d.ts","sourceRoot":"","sources":["../../../src/migrations/2022-10-03-110000-table-on-delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAEhF,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAI7C,yBAA+B,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,aAAa,CAAC,mBAAmB,CAAC,iBA2DjG"}
1
+ {"version":3,"file":"2022-10-03-110000-table-on-delete.d.ts","sourceRoot":"","sources":["../../../src/migrations/2022-10-03-110000-table-on-delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAEhF,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAI7C,yBAA+B,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,aAAa,CAAC,mBAAmB,CAAC,iBA0DjG"}
@@ -4,8 +4,11 @@ const database_1 = require("@contember/database");
4
4
  const schema_utils_1 = require("@contember/schema-utils");
5
5
  const schema_1 = require("@contember/schema");
6
6
  async function default_1(builder, args) {
7
+ var _a;
8
+ var _b;
7
9
  const schema = await args.schemaResolver(args.connection);
8
10
  const stages = (await args.connection.query('SELECT schema FROM stage')).rows;
11
+ const metadataByStage = {};
9
12
  for (const entity of Object.values(schema.model.entities)) {
10
13
  for (const field of Object.values(entity.fields)) {
11
14
  const result = (0, schema_utils_1.acceptFieldVisitor)(schema.model, entity, field, {
@@ -32,22 +35,24 @@ async function default_1(builder, args) {
32
35
  continue;
33
36
  }
34
37
  for (const stage of stages) {
35
- const fkName = schema_utils_1.NamingHelper.createForeignKeyName(entity.tableName, relation.joiningColumn.columnName, targetEntity.tableName, targetEntity.primaryColumn);
36
- const tableName = { name: entity.tableName, schema: stage.schema };
37
- builder.dropConstraint(tableName, fkName);
38
+ const databaseMetadata = (_a = metadataByStage[_b = stage.schema]) !== null && _a !== void 0 ? _a : (metadataByStage[_b] = await args.databaseMetadataResolver(args.connection, stage.schema));
39
+ const fkNames = databaseMetadata.getForeignKeyConstraintNames({
40
+ fromTable: entity.tableName,
41
+ fromColumn: relation.joiningColumn.columnName,
42
+ toTable: targetEntity.tableName,
43
+ toColumn: targetEntity.primaryColumn,
44
+ });
45
+ for (const name of fkNames) {
46
+ builder.sql(`ALTER TABLE ${(0, database_1.wrapIdentifier)(stage.schema)}.${(0, database_1.wrapIdentifier)(entity.tableName)} DROP CONSTRAINT ${(0, database_1.wrapIdentifier)(name)}`);
47
+ }
38
48
  const onDelete = {
39
49
  [schema_1.Model.OnDelete.setNull]: 'SET NULL',
40
50
  [schema_1.Model.OnDelete.cascade]: 'CASCADE',
41
51
  }[relation.joiningColumn.onDelete];
42
- builder.addConstraint(tableName, fkName, {
43
- foreignKeys: {
44
- columns: relation.joiningColumn.columnName,
45
- references: `${(0, database_1.wrapIdentifier)(stage.schema)}.${(0, database_1.wrapIdentifier)(targetEntity.tableName)}(${(0, database_1.wrapIdentifier)(targetEntity.primaryColumn)})`,
46
- onDelete: onDelete,
47
- },
48
- deferrable: true,
49
- deferred: false,
50
- });
52
+ builder.sql(`ALTER TABLE ${(0, database_1.wrapIdentifier)(stage.schema)}.${(0, database_1.wrapIdentifier)(entity.tableName)}
53
+ ADD FOREIGN KEY (${(0, database_1.wrapIdentifier)(relation.joiningColumn.columnName)})
54
+ REFERENCES ${(0, database_1.wrapIdentifier)(stage.schema)}.${(0, database_1.wrapIdentifier)(targetEntity.tableName)} (${(0, database_1.wrapIdentifier)(targetEntity.primaryColumn)}) ON DELETE ${onDelete} DEFERRABLE INITIALLY IMMEDIATE
55
+ `);
51
56
  }
52
57
  }
53
58
  }
@@ -1 +1 @@
1
- {"version":3,"file":"2022-10-03-110000-table-on-delete.js","sourceRoot":"","sources":["../../../src/migrations/2022-10-03-110000-table-on-delete.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"2022-10-03-110000-table-on-delete.js","sourceRoot":"","sources":["../../../src/migrations/2022-10-03-110000-table-on-delete.ts"],"names":[],"mappings":"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"}
@@ -3,15 +3,17 @@ import { DatabaseConfig } from '@contember/database';
3
3
  import { DatabaseContextFactory, SchemaVersionBuilder } from '../model';
4
4
  import { ProjectConfig } from '../types';
5
5
  import { Logger } from '@contember/logger';
6
+ import { SchemaDatabaseMetadataResolver } from '../model/metadata/SchemaDatabaseMetadataResolver';
6
7
  export declare class SystemMigrationsRunner {
7
8
  private readonly databaseContextFactory;
8
9
  private readonly project;
9
10
  private readonly schema;
10
11
  private readonly schemaVersionBuilder;
11
12
  private readonly migrationGroups;
13
+ private readonly databaseMetadataResolver;
12
14
  constructor(databaseContextFactory: DatabaseContextFactory, project: ProjectConfig & {
13
15
  db: DatabaseConfig;
14
- }, schema: string, schemaVersionBuilder: SchemaVersionBuilder, migrationGroups: Record<string, MigrationGroup<unknown>>);
16
+ }, schema: string, schemaVersionBuilder: SchemaVersionBuilder, migrationGroups: Record<string, MigrationGroup<unknown>>, databaseMetadataResolver: SchemaDatabaseMetadataResolver);
15
17
  run(logger: Logger): Promise<void>;
16
18
  }
17
19
  //# sourceMappingURL=runner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../src/migrations/runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAA0C,MAAM,gCAAgC,CAAA;AAqBvG,OAAO,EAAiD,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACnG,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AA0B1C,qBAAa,sBAAsB;IAEjC,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAJf,sBAAsB,EAAE,sBAAsB,EAC9C,OAAO,EAAE,aAAa,GAAG;QAAE,EAAE,EAAE,cAAc,CAAA;KAAE,EAC/C,MAAM,EAAE,MAAM,EACd,oBAAoB,EAAE,oBAAoB,EAC1C,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IAGpE,GAAG,CAAC,MAAM,EAAE,MAAM;CAqBxB"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../src/migrations/runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAA0C,MAAM,gCAAgC,CAAA;AAqBvG,OAAO,EAAiD,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACnG,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAG1C,OAAO,EAAE,8BAA8B,EAAE,MAAM,kDAAkD,CAAA;AAwBjG,qBAAa,sBAAsB;IAEjC,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,wBAAwB;gBALxB,sBAAsB,EAAE,sBAAsB,EAC9C,OAAO,EAAE,aAAa,GAAG;QAAE,EAAE,EAAE,cAAc,CAAA;KAAE,EAC/C,MAAM,EAAE,MAAM,EACd,oBAAoB,EAAE,oBAAoB,EAC1C,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC,EACxD,wBAAwB,EAAE,8BAA8B;IAGpE,GAAG,CAAC,MAAM,EAAE,MAAM;CAyBxB"}
@@ -48,12 +48,13 @@ const migrations = {
48
48
  '2022-10-03-110000-table-on-delete': _2022_10_03_110000_table_on_delete_1.default,
49
49
  };
50
50
  class SystemMigrationsRunner {
51
- constructor(databaseContextFactory, project, schema, schemaVersionBuilder, migrationGroups) {
51
+ constructor(databaseContextFactory, project, schema, schemaVersionBuilder, migrationGroups, databaseMetadataResolver) {
52
52
  this.databaseContextFactory = databaseContextFactory;
53
53
  this.project = project;
54
54
  this.schema = schema;
55
55
  this.schemaVersionBuilder = schemaVersionBuilder;
56
56
  this.migrationGroups = migrationGroups;
57
+ this.databaseMetadataResolver = databaseMetadataResolver;
57
58
  }
58
59
  async run(logger) {
59
60
  await (0, database_1.createDatabaseIfNotExists)(this.project.db, message => typeof message === 'string' ? logger.warn(message) : logger.error(message));
@@ -68,6 +69,10 @@ class SystemMigrationsRunner {
68
69
  await migrationsRunner.migrate(message => logger.warn(message), {
69
70
  project: this.project,
70
71
  schemaResolver,
72
+ databaseMetadataResolver: (connection, schema) => {
73
+ const dbContextMigrations = this.databaseContextFactory.create(connection);
74
+ return this.databaseMetadataResolver.resolveMetadata(dbContextMigrations, schema);
75
+ },
71
76
  });
72
77
  });
73
78
  await singleConnection.end();
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../src/migrations/runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../src/migrations/runner.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,10 @@
1
1
  import { Schema } from '@contember/schema';
2
2
  import { ProjectConfig } from '../types';
3
3
  import { Connection } from '@contember/database';
4
+ import { SchemaDatabaseMetadata } from '@contember/schema-utils';
4
5
  export interface SystemMigrationArgs {
5
6
  schemaResolver: (connection: Connection.ConnectionLike) => Promise<Schema>;
7
+ databaseMetadataResolver: (connection: Connection.ConnectionLike, schema: string) => Promise<SchemaDatabaseMetadata>;
6
8
  project: ProjectConfig;
7
9
  }
8
10
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/migrations/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAEhD,MAAM,WAAW,mBAAmB;IACnC,cAAc,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IAC1E,OAAO,EAAE,aAAa,CAAA;CACtB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/migrations/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAEhE,MAAM,WAAW,mBAAmB;IACnC,cAAc,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IAC1E,wBAAwB,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,sBAAsB,CAAC,CAAA;IACpH,OAAO,EAAE,aAAa,CAAA;CACtB"}
@@ -5,6 +5,7 @@ export * from './dependencies';
5
5
  export * from './dtos';
6
6
  export * from './events';
7
7
  export * from './helpers';
8
+ export * from './metadata';
8
9
  export * from './migrations';
9
10
  export * from './queries';
10
11
  export * from './stages';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/model/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,sBAAsB,CAAA;AACpC,cAAc,2BAA2B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/model/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,sBAAsB,CAAA;AACpC,cAAc,2BAA2B,CAAA"}
@@ -21,6 +21,7 @@ __exportStar(require("./dependencies"), exports);
21
21
  __exportStar(require("./dtos"), exports);
22
22
  __exportStar(require("./events"), exports);
23
23
  __exportStar(require("./helpers"), exports);
24
+ __exportStar(require("./metadata"), exports);
24
25
  __exportStar(require("./migrations"), exports);
25
26
  __exportStar(require("./queries"), exports);
26
27
  __exportStar(require("./stages"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/model/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAA+B;AAC/B,6CAA0B;AAC1B,6CAA0B;AAC1B,iDAA8B;AAC9B,yCAAsB;AACtB,2CAAwB;AACxB,4CAAyB;AACzB,+CAA4B;AAC5B,4CAAyB;AACzB,2CAAwB;AACxB,uDAAoC;AACpC,4DAAyC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/model/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAA+B;AAC/B,6CAA0B;AAC1B,6CAA0B;AAC1B,iDAA8B;AAC9B,yCAAsB;AACtB,2CAAwB;AACxB,4CAAyB;AACzB,6CAA0B;AAC1B,+CAA4B;AAC5B,4CAAyB;AACzB,2CAAwB;AACxB,uDAAoC;AACpC,4DAAyC"}
@@ -0,0 +1,13 @@
1
+ import { ForeignKeyConstraintMetadata, GetForeignKeyConstraintNameArgs, GetIndexNameArgs, GetUniqueConstraintNameArgs, IndexMetadata, SchemaDatabaseMetadata, UniqueConstraintMetadata } from '@contember/schema-utils';
2
+ export declare class ResolvedDatabaseMetadata implements SchemaDatabaseMetadata {
3
+ private readonly foreignKeys;
4
+ private readonly uniqueConstraints;
5
+ private readonly indexes;
6
+ constructor(foreignKeys: ForeignKeyConstraintMetadata[], uniqueConstraints: UniqueConstraintMetadata[], indexes: IndexMetadata[]);
7
+ getUniqueConstraint(tableName: string, constraintName: string): UniqueConstraintMetadata | null;
8
+ getForeignKeyConstraint(tableName: string, constraintName: string): ForeignKeyConstraintMetadata | null;
9
+ getForeignKeyConstraintNames({ fromTable, fromColumn, toTable, toColumn }: GetForeignKeyConstraintNameArgs): string[];
10
+ getUniqueConstraintNames({ tableName, columnNames }: GetUniqueConstraintNameArgs): string[];
11
+ getIndexNames({ tableName, columnNames }: GetIndexNameArgs): string[];
12
+ }
13
+ //# sourceMappingURL=ResolvedDatabaseMetadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResolvedDatabaseMetadata.d.ts","sourceRoot":"","sources":["../../../../src/model/metadata/ResolvedDatabaseMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,4BAA4B,EAC5B,+BAA+B,EAC/B,gBAAgB,EAChB,2BAA2B,EAC3B,aAAa,EACb,sBAAsB,EACtB,wBAAwB,EACxB,MAAM,yBAAyB,CAAA;AAOhC,qBAAa,wBAAyB,YAAW,sBAAsB;IAErE,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAFP,WAAW,EAAE,4BAA4B,EAAE,EAC3C,iBAAiB,EAAE,wBAAwB,EAAE,EAC7C,OAAO,EAAE,aAAa,EAAE;IAI1C,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,wBAAwB,GAAG,IAAI;IAI/F,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,4BAA4B,GAAG,IAAI;IAIvG,4BAA4B,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,+BAA+B,GAAG,MAAM,EAAE;IAWrH,wBAAwB,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,2BAA2B,GAAG,MAAM,EAAE;IAM3F,aAAa,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,gBAAgB,GAAG,MAAM,EAAE;CAKrE"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ResolvedDatabaseMetadata = void 0;
4
+ const stringArrayEquals = (colA, colB) => {
5
+ return colA.length === colB.length
6
+ && colA.every((it, index) => it === colB[index]);
7
+ };
8
+ class ResolvedDatabaseMetadata {
9
+ constructor(foreignKeys, uniqueConstraints, indexes) {
10
+ this.foreignKeys = foreignKeys;
11
+ this.uniqueConstraints = uniqueConstraints;
12
+ this.indexes = indexes;
13
+ }
14
+ getUniqueConstraint(tableName, constraintName) {
15
+ var _a;
16
+ return (_a = this.uniqueConstraints.find(it => it.tableName === tableName && it.constraintName === constraintName)) !== null && _a !== void 0 ? _a : null;
17
+ }
18
+ getForeignKeyConstraint(tableName, constraintName) {
19
+ var _a;
20
+ return (_a = this.foreignKeys.find(it => it.fromTable === tableName && it.constraintName === constraintName)) !== null && _a !== void 0 ? _a : null;
21
+ }
22
+ getForeignKeyConstraintNames({ fromTable, fromColumn, toTable, toColumn }) {
23
+ return this.foreignKeys
24
+ .filter(it => it.fromTable === fromTable
25
+ && it.toTable === toTable
26
+ && it.fromColumn === fromColumn
27
+ && it.toColumn === toColumn)
28
+ .map(it => it.constraintName);
29
+ }
30
+ getUniqueConstraintNames({ tableName, columnNames }) {
31
+ return this.uniqueConstraints
32
+ .filter(it => it.tableName === tableName && stringArrayEquals(columnNames, it.columnNames))
33
+ .map(it => it.constraintName);
34
+ }
35
+ getIndexNames({ tableName, columnNames }) {
36
+ return this.indexes
37
+ .filter(it => it.tableName === tableName && stringArrayEquals(columnNames, it.columnNames))
38
+ .map(it => it.indexName);
39
+ }
40
+ }
41
+ exports.ResolvedDatabaseMetadata = ResolvedDatabaseMetadata;
42
+ //# sourceMappingURL=ResolvedDatabaseMetadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResolvedDatabaseMetadata.js","sourceRoot":"","sources":["../../../../src/model/metadata/ResolvedDatabaseMetadata.ts"],"names":[],"mappings":";;;AAUA,MAAM,iBAAiB,GAAG,CAAC,IAAc,EAAE,IAAc,EAAE,EAAE;IAC5D,OAAO,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;WAC9B,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;AAClD,CAAC,CAAA;AAED,MAAa,wBAAwB;IACpC,YACkB,WAA2C,EAC3C,iBAA6C,EAC7C,OAAwB;QAFxB,gBAAW,GAAX,WAAW,CAAgC;QAC3C,sBAAiB,GAAjB,iBAAiB,CAA4B;QAC7C,YAAO,GAAP,OAAO,CAAiB;IAE1C,CAAC;IAED,mBAAmB,CAAC,SAAiB,EAAE,cAAsB;;QAC5D,OAAO,MAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,CAAC,cAAc,KAAK,cAAc,CAAC,mCAAI,IAAI,CAAA;IACrH,CAAC;IAED,uBAAuB,CAAC,SAAiB,EAAE,cAAsB;;QAChE,OAAO,MAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,CAAC,cAAc,KAAK,cAAc,CAAC,mCAAI,IAAI,CAAA;IAC/G,CAAC;IAED,4BAA4B,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAmC;QACzG,OAAO,IAAI,CAAC,WAAW;aACrB,MAAM,CAAC,EAAE,CAAC,EAAE,CACZ,EAAE,CAAC,SAAS,KAAK,SAAS;eACvB,EAAE,CAAC,OAAO,KAAK,OAAO;eACtB,EAAE,CAAC,UAAU,KAAK,UAAU;eAC5B,EAAE,CAAC,QAAQ,KAAK,QAAQ,CAC3B;aACA,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,CAAA;IAC/B,CAAC;IAED,wBAAwB,CAAC,EAAE,SAAS,EAAE,WAAW,EAA+B;QAC/E,OAAO,IAAI,CAAC,iBAAiB;aAC3B,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,KAAK,SAAS,IAAI,iBAAiB,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC;aAC1F,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,CAAA;IAC/B,CAAC;IAED,aAAa,CAAC,EAAE,SAAS,EAAE,WAAW,EAAoB;QACzD,OAAO,IAAI,CAAC,OAAO;aACjB,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,KAAK,SAAS,IAAI,iBAAiB,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC;aAC1F,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAA;IAC1B,CAAC;CACD;AAtCD,4DAsCC"}
@@ -0,0 +1,8 @@
1
+ import { SchemaDatabaseMetadata } from '@contember/schema-utils';
2
+ import { DatabaseContext } from '../database';
3
+ export declare class SchemaDatabaseMetadataResolver {
4
+ resolveMetadata(db: DatabaseContext, contentSchema: string): Promise<SchemaDatabaseMetadata>;
5
+ private fetchConstraints;
6
+ private fetchIndexes;
7
+ }
8
+ //# sourceMappingURL=SchemaDatabaseMetadataResolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaDatabaseMetadataResolver.d.ts","sourceRoot":"","sources":["../../../../src/model/metadata/SchemaDatabaseMetadataResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,sBAAsB,EAEtB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAI7C,qBAAa,8BAA8B;IACpC,eAAe,CAAC,EAAE,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;YAkCpF,gBAAgB;YA+BhB,YAAY;CAsB1B"}
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SchemaDatabaseMetadataResolver = void 0;
4
+ const ResolvedDatabaseMetadata_1 = require("./ResolvedDatabaseMetadata");
5
+ class SchemaDatabaseMetadataResolver {
6
+ async resolveMetadata(db, contentSchema) {
7
+ const constraintRows = await this.fetchConstraints(db.client, contentSchema);
8
+ const indexRows = await this.fetchIndexes(db.client, contentSchema);
9
+ const fkConstraints = constraintRows
10
+ .filter((it) => it.type === ConstraintTypes.foreignKey)
11
+ .map((it) => ({
12
+ constraintName: it.constraint_name,
13
+ fromColumn: it.columns[0],
14
+ toColumn: it.target_columns[0],
15
+ fromTable: it.table_name,
16
+ toTable: it.target_table,
17
+ }));
18
+ const uniqueConstraints = constraintRows
19
+ .filter((it) => it.type === ConstraintTypes.unique)
20
+ .map((it) => ({
21
+ constraintName: it.constraint_name,
22
+ tableName: it.table_name,
23
+ columnNames: it.columns,
24
+ }));
25
+ const indexes = indexRows
26
+ .map((it) => ({
27
+ indexName: it.index_name,
28
+ tableName: it.table_name,
29
+ columnNames: it.columns,
30
+ }));
31
+ return new ResolvedDatabaseMetadata_1.ResolvedDatabaseMetadata(fkConstraints, uniqueConstraints, indexes);
32
+ }
33
+ async fetchConstraints(connection, schema) {
34
+ return (await connection.query(`
35
+ SELECT
36
+ MAX(pg_constraint.conname) AS constraint_name,
37
+ MAX(pg_class.relname) AS table_name,
38
+ JSONB_AGG(DISTINCT pg_attribute.attname) AS columns,
39
+ MAX(pg_constraint.contype) AS type,
40
+ MAX(pg_constraint_table.relname) AS target_table,
41
+ JSONB_AGG(DISTINCT pg_attribute_target.attname)
42
+ FILTER ( WHERE pg_attribute_target.attname IS NOT NULL) AS target_columns,
43
+ BOOL_OR(condeferrable),
44
+ BOOL_OR(condeferred)
45
+ FROM pg_constraint
46
+ JOIN pg_class
47
+ ON pg_constraint.conrelid = pg_class.oid
48
+ JOIN pg_namespace
49
+ ON pg_class.relnamespace = pg_namespace.oid
50
+ JOIN pg_attribute
51
+ ON pg_attribute.attrelid = pg_class.oid AND pg_attribute.attnum = ANY (pg_constraint.conkey)
52
+ LEFT JOIN pg_attribute pg_attribute_target
53
+ ON pg_constraint.confrelid = pg_attribute_target.attrelid AND
54
+ pg_attribute_target.attnum = ANY (pg_constraint.confkey)
55
+ LEFT JOIN pg_class pg_constraint_table
56
+ ON pg_constraint_table.oid = pg_constraint.confrelid
57
+ WHERE pg_namespace.nspname = ?
58
+ AND pg_constraint.contype = ANY (ARRAY ['f', 'u'])
59
+ GROUP BY pg_constraint.oid
60
+ `, [schema]))
61
+ .rows;
62
+ }
63
+ async fetchIndexes(connection, schema) {
64
+ return (await connection.query(`
65
+ SELECT
66
+ MAX(idx_class.relname) AS index_name,
67
+ MAX(table_class.relname) AS table_name,
68
+ JSONB_AGG(DISTINCT pg_attribute.attname) AS columns
69
+ FROM pg_index
70
+ JOIN pg_class AS table_class
71
+ ON pg_index.indrelid = table_class.oid
72
+ JOIN pg_class AS idx_class
73
+ ON pg_index.indexrelid = idx_class.oid
74
+ JOIN pg_namespace
75
+ ON table_class.relnamespace = pg_namespace.oid
76
+ JOIN pg_attribute
77
+ ON pg_attribute.attrelid = table_class.oid AND pg_attribute.attnum = ANY (pg_index.indkey)
78
+ WHERE pg_namespace.nspname = ?
79
+ AND indisprimary = FALSE
80
+ AND indisunique = FALSE
81
+ GROUP BY pg_index.indexrelid
82
+ `, [schema]))
83
+ .rows;
84
+ }
85
+ }
86
+ exports.SchemaDatabaseMetadataResolver = SchemaDatabaseMetadataResolver;
87
+ var ConstraintTypes;
88
+ (function (ConstraintTypes) {
89
+ ConstraintTypes["foreignKey"] = "f";
90
+ ConstraintTypes["unique"] = "u";
91
+ })(ConstraintTypes || (ConstraintTypes = {}));
92
+ //# sourceMappingURL=SchemaDatabaseMetadataResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaDatabaseMetadataResolver.js","sourceRoot":"","sources":["../../../../src/model/metadata/SchemaDatabaseMetadataResolver.ts"],"names":[],"mappings":";;;AAQA,yEAAqE;AAErE,MAAa,8BAA8B;IAC1C,KAAK,CAAC,eAAe,CAAC,EAAmB,EAAE,aAAqB;QAC/D,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;QAC5E,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;QAEnE,MAAM,aAAa,GAAG,cAAc;aAClC,MAAM,CAAC,CAAC,EAAE,EAAkC,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,eAAe,CAAC,UAAU,CAAC;aACtF,GAAG,CAAC,CAAC,EAAE,EAAgC,EAAE,CAAC,CAAC;YAC3C,cAAc,EAAE,EAAE,CAAC,eAAe;YAClC,UAAU,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;YACzB,QAAQ,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;YAC9B,SAAS,EAAE,EAAE,CAAC,UAAU;YACxB,OAAO,EAAE,EAAE,CAAC,YAAY;SACxB,CAAC,CAAC,CAAA;QACJ,MAAM,iBAAiB,GAAG,cAAc;aACtC,MAAM,CAAC,CAAC,EAAE,EAA8B,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,eAAe,CAAC,MAAM,CAAC;aAC9E,GAAG,CAAC,CAAC,EAAE,EAA4B,EAAE,CAAC,CAAC;YACvC,cAAc,EAAE,EAAE,CAAC,eAAe;YAClC,SAAS,EAAE,EAAE,CAAC,UAAU;YACxB,WAAW,EAAE,EAAE,CAAC,OAAO;SACvB,CAAC,CAAC,CAAA;QACJ,MAAM,OAAO,GAAG,SAAS;aACvB,GAAG,CAAC,CAAC,EAAE,EAAiB,EAAE,CAAC,CAAC;YAC5B,SAAS,EAAE,EAAE,CAAC,UAAU;YACxB,SAAS,EAAE,EAAE,CAAC,UAAU;YACxB,WAAW,EAAE,EAAE,CAAC,OAAO;SACvB,CAAC,CAAC,CAAA;QAEJ,OAAO,IAAI,mDAAwB,CAClC,aAAa,EACb,iBAAiB,EACjB,OAAO,CACP,CAAA;IACF,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,UAAgC,EAAE,MAAc;QAC9E,OAAO,CAAC,MAAM,UAAU,CAAC,KAAK,CAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;GA0B9C,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;aACX,IAAI,CAAA;IACP,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,UAAgC,EAAE,MAAc;QAC1E,OAAO,CAAC,MAAM,UAAU,CAAC,KAAK,CAAW;;;;;;;;;;;;;;;;;;GAkBxC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;aACX,IAAI,CAAA;IACP,CAAC;CACD;AAxFD,wEAwFC;AAED,IAAK,eAGJ;AAHD,WAAK,eAAe;IACnB,mCAAgB,CAAA;IAChB,+BAAY,CAAA;AACb,CAAC,EAHI,eAAe,KAAf,eAAe,QAGnB"}
@@ -0,0 +1,17 @@
1
+ import { SchemaDatabaseMetadata } from '@contember/schema-utils';
2
+ import { SchemaDatabaseMetadataResolver } from './SchemaDatabaseMetadataResolver';
3
+ import { DatabaseContext } from '../database';
4
+ export declare class SchemaDatabaseMetadataResolverStore {
5
+ private resolver;
6
+ private db;
7
+ private cache;
8
+ constructor(resolver: SchemaDatabaseMetadataResolver, db: DatabaseContext);
9
+ getMetadata(schema: string): Promise<SchemaDatabaseMetadata>;
10
+ invalidate(schema: string): void;
11
+ }
12
+ export declare class MigrationsDatabaseMetadataResolverStoreFactory {
13
+ private resolver;
14
+ constructor(resolver: SchemaDatabaseMetadataResolver);
15
+ create(db: DatabaseContext): SchemaDatabaseMetadataResolverStore;
16
+ }
17
+ //# sourceMappingURL=SchemaDatabaseMetadataResolverStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaDatabaseMetadataResolverStore.d.ts","sourceRoot":"","sources":["../../../../src/model/metadata/SchemaDatabaseMetadataResolverStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAChE,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAA;AACjF,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAE7C,qBAAa,mCAAmC;IAK9C,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,EAAE;IAJX,OAAO,CAAC,KAAK,CAAiD;gBAGrD,QAAQ,EAAE,8BAA8B,EACxC,EAAE,EAAE,eAAe;IAIf,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAWlE,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAGvC;AAGD,qBAAa,8CAA8C;IAEzD,OAAO,CAAC,QAAQ;gBAAR,QAAQ,EAAE,8BAA8B;IAI1C,MAAM,CAAC,EAAE,EAAE,eAAe;CAGjC"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MigrationsDatabaseMetadataResolverStoreFactory = exports.SchemaDatabaseMetadataResolverStore = void 0;
4
+ class SchemaDatabaseMetadataResolverStore {
5
+ constructor(resolver, db) {
6
+ this.resolver = resolver;
7
+ this.db = db;
8
+ this.cache = new Map();
9
+ }
10
+ async getMetadata(schema) {
11
+ const cached = this.cache.get(schema);
12
+ if (cached) {
13
+ return cached;
14
+ }
15
+ const newValue = await this.resolver.resolveMetadata(this.db, schema);
16
+ this.cache.set(schema, newValue);
17
+ return newValue;
18
+ }
19
+ invalidate(schema) {
20
+ this.cache.delete(schema);
21
+ }
22
+ }
23
+ exports.SchemaDatabaseMetadataResolverStore = SchemaDatabaseMetadataResolverStore;
24
+ class MigrationsDatabaseMetadataResolverStoreFactory {
25
+ constructor(resolver) {
26
+ this.resolver = resolver;
27
+ }
28
+ create(db) {
29
+ return new SchemaDatabaseMetadataResolverStore(this.resolver, db);
30
+ }
31
+ }
32
+ exports.MigrationsDatabaseMetadataResolverStoreFactory = MigrationsDatabaseMetadataResolverStoreFactory;
33
+ //# sourceMappingURL=SchemaDatabaseMetadataResolverStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaDatabaseMetadataResolverStore.js","sourceRoot":"","sources":["../../../../src/model/metadata/SchemaDatabaseMetadataResolverStore.ts"],"names":[],"mappings":";;;AAIA,MAAa,mCAAmC;IAI/C,YACS,QAAwC,EACxC,EAAmB;QADnB,aAAQ,GAAR,QAAQ,CAAgC;QACxC,OAAE,GAAF,EAAE,CAAiB;QAJpB,UAAK,GAAwC,IAAI,GAAG,EAAE,CAAA;IAM9D,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,MAAc;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACrC,IAAI,MAAM,EAAE;YACX,OAAO,MAAM,CAAA;SACb;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;QACrE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QAChC,OAAO,QAAQ,CAAA;IAChB,CAAC;IAEM,UAAU,CAAC,MAAc;QAC/B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAC1B,CAAC;CACD;AAxBD,kFAwBC;AAGD,MAAa,8CAA8C;IAC1D,YACS,QAAwC;QAAxC,aAAQ,GAAR,QAAQ,CAAgC;IAEjD,CAAC;IAEM,MAAM,CAAC,EAAmB;QAChC,OAAO,IAAI,mCAAmC,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;IAClE,CAAC;CACD;AATD,wGASC"}
@@ -0,0 +1,4 @@
1
+ export * from './SchemaDatabaseMetadataResolver';
2
+ export * from './SchemaDatabaseMetadataResolverStore';
3
+ export { ResolvedDatabaseMetadata } from './ResolvedDatabaseMetadata';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/model/metadata/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAA;AAChD,cAAc,uCAAuC,CAAA;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAA"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.ResolvedDatabaseMetadata = void 0;
18
+ __exportStar(require("./SchemaDatabaseMetadataResolver"), exports);
19
+ __exportStar(require("./SchemaDatabaseMetadataResolverStore"), exports);
20
+ var ResolvedDatabaseMetadata_1 = require("./ResolvedDatabaseMetadata");
21
+ Object.defineProperty(exports, "ResolvedDatabaseMetadata", { enumerable: true, get: function () { return ResolvedDatabaseMetadata_1.ResolvedDatabaseMetadata; } });
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/model/metadata/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,mEAAgD;AAChD,wEAAqD;AACrD,uEAAqE;AAA5D,oIAAA,wBAAwB,OAAA"}