@contember/engine-system-api 0.12.0-beta.2 → 1.0.0-alpha.3
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/dist/src/SystemContainer.d.ts +15 -14
- package/dist/src/SystemContainer.d.ts.map +1 -1
- package/dist/src/SystemContainer.js +7 -11
- package/dist/src/SystemContainer.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/model/ProjectInitializer.d.ts.map +1 -1
- package/dist/src/model/ProjectInitializer.js +7 -17
- package/dist/src/model/ProjectInitializer.js.map +1 -1
- package/dist/src/model/ProjectTruncateExecutor.js +3 -3
- package/dist/src/model/ProjectTruncateExecutor.js.map +1 -1
- package/dist/src/model/authorization/AuthorizationActions.d.ts +0 -20
- package/dist/src/model/authorization/AuthorizationActions.d.ts.map +1 -1
- package/dist/src/model/authorization/AuthorizationActions.js +0 -5
- package/dist/src/model/authorization/AuthorizationActions.js.map +1 -1
- package/dist/src/model/authorization/StagePermissionsFactory.d.ts.map +1 -1
- package/dist/src/model/authorization/StagePermissionsFactory.js +1 -21
- package/dist/src/model/authorization/StagePermissionsFactory.js.map +1 -1
- package/dist/src/model/commands/migrations/ModifyMigrationCommand.js +1 -1
- package/dist/src/model/commands/migrations/ModifyMigrationCommand.js.map +1 -1
- package/dist/src/model/commands/migrations/SaveMigrationCommand.js +1 -1
- package/dist/src/model/commands/migrations/SaveMigrationCommand.js.map +1 -1
- package/dist/src/model/commands/stages/CreateOrUpdateStageCommand.d.ts.map +1 -1
- package/dist/src/model/commands/stages/CreateOrUpdateStageCommand.js +2 -3
- package/dist/src/model/commands/stages/CreateOrUpdateStageCommand.js.map +1 -1
- package/dist/src/model/commands/stages/index.d.ts +0 -1
- package/dist/src/model/commands/stages/index.d.ts.map +1 -1
- package/dist/src/model/commands/stages/index.js +0 -1
- package/dist/src/model/commands/stages/index.js.map +1 -1
- package/dist/src/model/database/DatabaseContext.js +1 -1
- package/dist/src/model/database/DatabaseContext.js.map +1 -1
- package/dist/src/model/dependencies/content/index.d.ts +0 -1
- package/dist/src/model/dependencies/content/index.d.ts.map +1 -1
- package/dist/src/model/dependencies/content/index.js +0 -1
- package/dist/src/model/dependencies/content/index.js.map +1 -1
- package/dist/src/model/dependencies/index.d.ts +1 -0
- package/dist/src/model/dependencies/index.d.ts.map +1 -1
- package/dist/src/model/dependencies/index.js +1 -0
- package/dist/src/model/dependencies/index.js.map +1 -1
- package/dist/src/model/dependencies/tenant/IdentityFetcher.d.ts +2 -1
- package/dist/src/model/dependencies/tenant/IdentityFetcher.d.ts.map +1 -1
- package/dist/src/model/dependencies/tenant/index.d.ts +2 -0
- package/dist/src/model/dependencies/tenant/index.d.ts.map +1 -0
- package/dist/src/model/{events/dependency → dependencies/tenant}/index.js +1 -5
- package/dist/src/model/dependencies/tenant/index.js.map +1 -0
- package/dist/src/model/events/EventResponseBuilder.d.ts +11 -0
- package/dist/src/model/events/EventResponseBuilder.d.ts.map +1 -0
- package/dist/src/model/events/{HistoryEventResponseBuilder.js → EventResponseBuilder.js} +19 -18
- package/dist/src/model/events/EventResponseBuilder.js.map +1 -0
- package/dist/src/model/events/EventResponseHelper.d.ts +3 -3
- package/dist/src/model/events/EventResponseHelper.js +3 -3
- package/dist/src/model/events/EventResponseHelper.js.map +1 -1
- package/dist/src/model/events/identityUtils.js +1 -1
- package/dist/src/model/events/identityUtils.js.map +1 -1
- package/dist/src/model/events/index.d.ts +1 -5
- package/dist/src/model/events/index.d.ts.map +1 -1
- package/dist/src/model/events/index.js +1 -5
- package/dist/src/model/events/index.js.map +1 -1
- package/dist/src/model/helpers/modelHelpers.js +1 -1
- package/dist/src/model/helpers/modelHelpers.js.map +1 -1
- package/dist/src/model/migrations/MigrationExecutor.d.ts.map +1 -1
- package/dist/src/model/migrations/MigrationExecutor.js +2 -2
- package/dist/src/model/migrations/MigrationExecutor.js.map +1 -1
- package/dist/src/model/migrations/ProjectMigrator.d.ts.map +1 -1
- package/dist/src/model/migrations/ProjectMigrator.js +6 -12
- package/dist/src/model/migrations/ProjectMigrator.js.map +1 -1
- package/dist/src/model/migrations/SchemaVersionBuilder.js +2 -2
- package/dist/src/model/migrations/SchemaVersionBuilder.js.map +1 -1
- package/dist/src/model/queries/events/EventQueryHelpers.d.ts +4 -3
- package/dist/src/model/queries/events/EventQueryHelpers.d.ts.map +1 -1
- package/dist/src/model/queries/events/EventQueryHelpers.js +4 -5
- package/dist/src/model/queries/events/EventQueryHelpers.js.map +1 -1
- package/dist/src/model/queries/events/EventsQuery.d.ts +12 -0
- package/dist/src/model/queries/events/EventsQuery.d.ts.map +1 -0
- package/dist/src/model/queries/events/EventsQuery.js +88 -0
- package/dist/src/model/queries/events/EventsQuery.js.map +1 -0
- package/dist/src/model/queries/events/OldValuesQuery.d.ts +7 -0
- package/dist/src/model/queries/events/OldValuesQuery.d.ts.map +1 -0
- package/dist/src/model/queries/events/OldValuesQuery.js +25 -0
- package/dist/src/model/queries/events/OldValuesQuery.js.map +1 -0
- package/dist/src/model/queries/events/index.d.ts +2 -0
- package/dist/src/model/queries/events/index.d.ts.map +1 -1
- package/dist/src/model/queries/events/index.js +2 -0
- package/dist/src/model/queries/events/index.js.map +1 -1
- package/dist/src/model/queries/migrations/ExecutedMigrationByVersionQuery.js +2 -2
- package/dist/src/model/queries/migrations/ExecutedMigrationByVersionQuery.js.map +1 -1
- package/dist/src/model/queries/migrations/ExecutedMigrationsQuery.js +1 -1
- package/dist/src/model/queries/migrations/ExecutedMigrationsQuery.js.map +1 -1
- package/dist/src/model/queries/stages/StageBySlugQuery.js +1 -1
- package/dist/src/model/queries/stages/StageBySlugQuery.js.map +1 -1
- package/dist/src/model/queries/stages/StageQueryFactory.d.ts.map +1 -1
- package/dist/src/model/queries/stages/StageQueryFactory.js +0 -1
- package/dist/src/model/queries/stages/StageQueryFactory.js.map +1 -1
- package/dist/src/model/stages/StageCreator.d.ts +1 -2
- package/dist/src/model/stages/StageCreator.d.ts.map +1 -1
- package/dist/src/model/stages/StageCreator.js +2 -10
- package/dist/src/model/stages/StageCreator.js.map +1 -1
- package/dist/src/model/stages/index.d.ts +0 -1
- package/dist/src/model/stages/index.d.ts.map +1 -1
- package/dist/src/model/stages/index.js +0 -1
- package/dist/src/model/stages/index.js.map +1 -1
- package/dist/src/resolvers/ResolverContext.d.ts +4 -3
- package/dist/src/resolvers/ResolverContext.d.ts.map +1 -1
- package/dist/src/resolvers/ResolverContext.js +2 -2
- package/dist/src/resolvers/ResolverContext.js.map +1 -1
- package/dist/src/resolvers/ResolverFactory.d.ts +7 -11
- package/dist/src/resolvers/ResolverFactory.d.ts.map +1 -1
- package/dist/src/resolvers/ResolverFactory.js +21 -14
- package/dist/src/resolvers/ResolverFactory.js.map +1 -1
- package/dist/src/resolvers/mutation/MigrateMutationResolver.d.ts.map +1 -1
- package/dist/src/resolvers/mutation/MigrateMutationResolver.js +3 -2
- package/dist/src/resolvers/mutation/MigrateMutationResolver.js.map +1 -1
- package/dist/src/resolvers/mutation/index.d.ts +1 -0
- package/dist/src/resolvers/mutation/index.d.ts.map +1 -1
- package/dist/src/resolvers/mutation/index.js +1 -0
- package/dist/src/resolvers/mutation/index.js.map +1 -1
- package/dist/src/resolvers/query/EventsQueryResolver.d.ts +11 -0
- package/dist/src/resolvers/query/EventsQueryResolver.d.ts.map +1 -0
- package/dist/src/resolvers/query/EventsQueryResolver.js +26 -0
- package/dist/src/resolvers/query/EventsQueryResolver.js.map +1 -0
- package/dist/src/resolvers/query/index.d.ts +1 -0
- package/dist/src/resolvers/query/index.d.ts.map +1 -1
- package/dist/src/resolvers/query/index.js +1 -0
- package/dist/src/resolvers/query/index.js.map +1 -1
- package/dist/src/resolvers/types/EventOldValuesResolver.d.ts +6 -0
- package/dist/src/resolvers/types/EventOldValuesResolver.d.ts.map +1 -0
- package/dist/src/resolvers/types/EventOldValuesResolver.js +11 -0
- package/dist/src/resolvers/types/EventOldValuesResolver.js.map +1 -0
- package/dist/src/resolvers/types/OldValuesHelpers.d.ts +3 -0
- package/dist/src/resolvers/types/OldValuesHelpers.d.ts.map +1 -0
- package/dist/src/resolvers/types/OldValuesHelpers.js +10 -0
- package/dist/src/resolvers/types/OldValuesHelpers.js.map +1 -0
- package/dist/src/resolvers/types/index.d.ts +2 -0
- package/dist/src/resolvers/types/index.d.ts.map +1 -0
- package/dist/src/resolvers/types/index.js +14 -0
- package/dist/src/resolvers/types/index.js.map +1 -0
- package/dist/src/schema/dev.graphql.js +1 -1
- package/dist/src/schema/dev.graphql.js.map +1 -1
- package/dist/src/schema/system.graphql.d.ts.map +1 -1
- package/dist/src/schema/system.graphql.js +47 -43
- package/dist/src/schema/system.graphql.js.map +1 -1
- package/dist/src/schema/types.d.ts +146 -170
- package/dist/src/schema/types.d.ts.map +1 -1
- package/dist/src/schema/types.js +14 -12
- package/dist/src/schema/types.js.map +1 -1
- package/dist/src/tsconfig.tsbuildinfo +1 -1
- package/dist/src/types.d.ts +0 -1
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/utils/batchQuery.js +1 -1
- package/dist/src/utils/batchQuery.js.map +1 -1
- package/dist/tests/cases/integration/systemApi/projectInitializer.test.js +1 -1
- package/dist/tests/cases/integration/systemApi/projectInitializer.test.js.map +1 -1
- package/dist/tests/src/asserts.js +1 -1
- package/dist/tests/src/asserts.js.map +1 -1
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/migrations/2020-05-06-150000-composed-primary.js +4 -4
- package/migrations/2020-05-06-150000-composed-primary.test.js +3 -3
- package/migrations/2020-06-01-103000-event-trigger-perf.js +1 -1
- package/migrations/2020-06-01-103000-event-trigger-perf.test.js +3 -3
- package/migrations/2021-05-07-155800-event-log-rework.js +1 -1
- package/migrations/2021-05-19-1232000-event-log-fix-constraint.js +1 -1
- package/migrations/2021-12-21-155500-events-up.sql +6 -0
- package/migrations/index.js +1 -1
- package/migrations/tsconfig.tsbuildinfo +1 -1
- package/package.json +14 -14
- package/src/SystemContainer.ts +18 -26
- package/src/index.ts +0 -1
- package/src/model/ProjectInitializer.ts +5 -16
- package/src/model/authorization/AuthorizationActions.ts +0 -8
- package/src/model/authorization/StagePermissionsFactory.ts +0 -21
- package/src/model/commands/stages/CreateOrUpdateStageCommand.ts +1 -2
- package/src/model/commands/stages/index.ts +0 -1
- package/src/model/dependencies/content/index.ts +0 -1
- package/src/model/dependencies/index.ts +1 -0
- package/src/model/dependencies/tenant/IdentityFetcher.ts +3 -1
- package/src/model/dependencies/tenant/index.ts +1 -0
- package/src/model/events/{HistoryEventResponseBuilder.ts → EventResponseBuilder.ts} +13 -17
- package/src/model/events/EventResponseHelper.ts +3 -3
- package/src/model/events/index.ts +1 -5
- package/src/model/migrations/MigrationExecutor.ts +0 -2
- package/src/model/migrations/ProjectMigrator.ts +5 -11
- package/src/model/migrations/SchemaVersionBuilder.ts +1 -1
- package/src/model/queries/events/EventQueryHelpers.ts +15 -12
- package/src/model/queries/events/EventsQuery.ts +105 -0
- package/src/model/queries/events/OldValuesQuery.ts +23 -0
- package/src/model/queries/events/index.ts +2 -0
- package/src/model/queries/stages/StageQueryFactory.ts +0 -1
- package/src/model/stages/StageCreator.ts +1 -12
- package/src/model/stages/index.ts +0 -1
- package/src/resolvers/ResolverContext.ts +5 -4
- package/src/resolvers/ResolverFactory.ts +27 -37
- package/src/resolvers/mutation/MigrateMutationResolver.ts +4 -3
- package/src/resolvers/mutation/index.ts +1 -0
- package/src/resolvers/query/EventsQueryResolver.ts +42 -0
- package/src/resolvers/query/index.ts +1 -0
- package/src/resolvers/types/EventOldValuesResolver.ts +13 -0
- package/src/resolvers/types/OldValuesHelpers.ts +11 -0
- package/src/resolvers/types/index.ts +1 -0
- package/src/schema/system.graphql.ts +46 -42
- package/src/schema/types.ts +148 -175
- package/src/types.ts +0 -1
- package/tests/src/asserts.ts +1 -1
- package/dist/src/model/commands/stages/UpdateStageEventCommand.d.ts +0 -8
- package/dist/src/model/commands/stages/UpdateStageEventCommand.d.ts.map +0 -1
- package/dist/src/model/commands/stages/UpdateStageEventCommand.js +0 -21
- package/dist/src/model/commands/stages/UpdateStageEventCommand.js.map +0 -1
- package/dist/src/model/dependencies/content/ContentEventsApplier.d.ts +0 -23
- package/dist/src/model/dependencies/content/ContentEventsApplier.d.ts.map +0 -1
- package/dist/src/model/dependencies/content/ContentEventsApplier.js +0 -3
- package/dist/src/model/dependencies/content/ContentEventsApplier.js.map +0 -1
- package/dist/src/model/events/DependencyBuilder.d.ts +0 -8
- package/dist/src/model/events/DependencyBuilder.d.ts.map +0 -1
- package/dist/src/model/events/DependencyBuilder.js +0 -3
- package/dist/src/model/events/DependencyBuilder.js.map +0 -1
- package/dist/src/model/events/DiffBuilder.d.ts +0 -48
- package/dist/src/model/events/DiffBuilder.d.ts.map +0 -1
- package/dist/src/model/events/DiffBuilder.js +0 -95
- package/dist/src/model/events/DiffBuilder.js.map +0 -1
- package/dist/src/model/events/EventFilterValidator.d.ts +0 -12
- package/dist/src/model/events/EventFilterValidator.d.ts.map +0 -1
- package/dist/src/model/events/EventFilterValidator.js +0 -50
- package/dist/src/model/events/EventFilterValidator.js.map +0 -1
- package/dist/src/model/events/HistoryEventResponseBuilder.d.ts +0 -10
- package/dist/src/model/events/HistoryEventResponseBuilder.d.ts.map +0 -1
- package/dist/src/model/events/HistoryEventResponseBuilder.js.map +0 -1
- package/dist/src/model/events/TableReferencingResolver.d.ts +0 -8
- package/dist/src/model/events/TableReferencingResolver.d.ts.map +0 -1
- package/dist/src/model/events/TableReferencingResolver.js +0 -31
- package/dist/src/model/events/TableReferencingResolver.js.map +0 -1
- package/dist/src/model/events/dependency/CreatedRowReferenceDependencyBuilder.d.ts +0 -19
- package/dist/src/model/events/dependency/CreatedRowReferenceDependencyBuilder.d.ts.map +0 -1
- package/dist/src/model/events/dependency/CreatedRowReferenceDependencyBuilder.js +0 -79
- package/dist/src/model/events/dependency/CreatedRowReferenceDependencyBuilder.js.map +0 -1
- package/dist/src/model/events/dependency/DeletedRowReferenceDependencyBuilder.d.ts +0 -17
- package/dist/src/model/events/dependency/DeletedRowReferenceDependencyBuilder.d.ts.map +0 -1
- package/dist/src/model/events/dependency/DeletedRowReferenceDependencyBuilder.js +0 -76
- package/dist/src/model/events/dependency/DeletedRowReferenceDependencyBuilder.js.map +0 -1
- package/dist/src/model/events/dependency/DependencyBuilderList.d.ts +0 -9
- package/dist/src/model/events/dependency/DependencyBuilderList.d.ts.map +0 -1
- package/dist/src/model/events/dependency/DependencyBuilderList.js +0 -20
- package/dist/src/model/events/dependency/DependencyBuilderList.js.map +0 -1
- package/dist/src/model/events/dependency/SameRowDependencyBuilder.d.ts +0 -16
- package/dist/src/model/events/dependency/SameRowDependencyBuilder.d.ts.map +0 -1
- package/dist/src/model/events/dependency/SameRowDependencyBuilder.js +0 -38
- package/dist/src/model/events/dependency/SameRowDependencyBuilder.js.map +0 -1
- package/dist/src/model/events/dependency/TransactionDependencyBuilder.d.ts +0 -15
- package/dist/src/model/events/dependency/TransactionDependencyBuilder.d.ts.map +0 -1
- package/dist/src/model/events/dependency/TransactionDependencyBuilder.js +0 -30
- package/dist/src/model/events/dependency/TransactionDependencyBuilder.js.map +0 -1
- package/dist/src/model/events/dependency/index.d.ts +0 -6
- package/dist/src/model/events/dependency/index.d.ts.map +0 -1
- package/dist/src/model/events/dependency/index.js.map +0 -1
- package/dist/src/model/stages/StageTree.d.ts +0 -14
- package/dist/src/model/stages/StageTree.d.ts.map +0 -1
- package/dist/src/model/stages/StageTree.js +0 -38
- package/dist/src/model/stages/StageTree.js.map +0 -1
- package/dist/src/resolvers/helpers/StageFetchHelper.d.ts +0 -22
- package/dist/src/resolvers/helpers/StageFetchHelper.d.ts.map +0 -1
- package/dist/src/resolvers/helpers/StageFetchHelper.js +0 -45
- package/dist/src/resolvers/helpers/StageFetchHelper.js.map +0 -1
- package/dist/tests/cases/unit/events/createdRowReference.test.d.ts +0 -2
- package/dist/tests/cases/unit/events/createdRowReference.test.d.ts.map +0 -1
- package/dist/tests/cases/unit/events/createdRowReference.test.js +0 -138
- package/dist/tests/cases/unit/events/createdRowReference.test.js.map +0 -1
- package/dist/tests/cases/unit/events/deletedRowReference.test.d.ts +0 -2
- package/dist/tests/cases/unit/events/deletedRowReference.test.d.ts.map +0 -1
- package/dist/tests/cases/unit/events/deletedRowReference.test.js +0 -103
- package/dist/tests/cases/unit/events/deletedRowReference.test.js.map +0 -1
- package/dist/tests/cases/unit/events/sameRowDependency.test.d.ts +0 -2
- package/dist/tests/cases/unit/events/sameRowDependency.test.d.ts.map +0 -1
- package/dist/tests/cases/unit/events/sameRowDependency.test.js +0 -63
- package/dist/tests/cases/unit/events/sameRowDependency.test.js.map +0 -1
- package/dist/tests/cases/unit/events/transactionDependency.test.d.ts +0 -2
- package/dist/tests/cases/unit/events/transactionDependency.test.d.ts.map +0 -1
- package/dist/tests/cases/unit/events/transactionDependency.test.js +0 -62
- package/dist/tests/cases/unit/events/transactionDependency.test.js.map +0 -1
- package/src/model/commands/stages/UpdateStageEventCommand.ts +0 -16
- package/src/model/dependencies/content/ContentEventsApplier.ts +0 -27
- package/src/model/events/DependencyBuilder.ts +0 -9
- package/src/model/events/DiffBuilder.ts +0 -150
- package/src/model/events/EventFilterValidator.ts +0 -52
- package/src/model/events/TableReferencingResolver.ts +0 -45
- package/src/model/events/dependency/CreatedRowReferenceDependencyBuilder.ts +0 -80
- package/src/model/events/dependency/DeletedRowReferenceDependencyBuilder.ts +0 -75
- package/src/model/events/dependency/DependencyBuilderList.ts +0 -18
- package/src/model/events/dependency/SameRowDependencyBuilder.ts +0 -36
- package/src/model/events/dependency/TransactionDependencyBuilder.ts +0 -31
- package/src/model/events/dependency/index.ts +0 -5
- package/src/model/stages/StageTree.ts +0 -36
- package/src/resolvers/helpers/StageFetchHelper.ts +0 -48
- package/tests/cases/unit/events/createdRowReference.test.ts +0 -131
- package/tests/cases/unit/events/deletedRowReference.test.ts +0 -95
- package/tests/cases/unit/events/sameRowDependency.test.ts +0 -48
- package/tests/cases/unit/events/transactionDependency.test.ts +0 -47
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contember/engine-system-api",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0-alpha.3",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"main": "dist/src/index.js",
|
|
6
6
|
"typings": "dist/src/index.d.ts",
|
|
@@ -9,28 +9,28 @@
|
|
|
9
9
|
"test": "uvu dist/tests/cases/ \\.js$ && uvu migrations \\.test\\.js"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@contember/authorization": "^0.
|
|
13
|
-
"@contember/database": "^0.
|
|
14
|
-
"@contember/database-migrations": "^0.
|
|
15
|
-
"@contember/dic": "^0.
|
|
16
|
-
"@contember/engine-common": "^0.
|
|
17
|
-
"@contember/graphql-utils": "^0.
|
|
18
|
-
"@contember/queryable": "^0.
|
|
19
|
-
"@contember/schema": "^0.
|
|
20
|
-
"@contember/schema-migrations": "^0.
|
|
21
|
-
"@contember/schema-utils": "^0.
|
|
12
|
+
"@contember/authorization": "^1.0.0-alpha.3",
|
|
13
|
+
"@contember/database": "^1.0.0-alpha.3",
|
|
14
|
+
"@contember/database-migrations": "^1.0.0-alpha.3",
|
|
15
|
+
"@contember/dic": "^1.0.0-alpha.3",
|
|
16
|
+
"@contember/engine-common": "^1.0.0-alpha.3",
|
|
17
|
+
"@contember/graphql-utils": "^1.0.0-alpha.3",
|
|
18
|
+
"@contember/queryable": "^1.0.0-alpha.3",
|
|
19
|
+
"@contember/schema": "^1.0.0-alpha.3",
|
|
20
|
+
"@contember/schema-migrations": "^1.0.0-alpha.3",
|
|
21
|
+
"@contember/schema-utils": "^1.0.0-alpha.3",
|
|
22
22
|
"@graphql-tools/utils": "^7.10.0",
|
|
23
23
|
"apollo-server-errors": "^2.4.0",
|
|
24
24
|
"graphql-tag": "^2.12.5"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
|
-
"@contember/engine-api-tester": "^0.
|
|
28
|
-
"@contember/schema-definition": "^0.
|
|
27
|
+
"@contember/engine-api-tester": "^1.0.0-alpha.3",
|
|
28
|
+
"@contember/schema-definition": "^1.0.0-alpha.3",
|
|
29
29
|
"@graphql-codegen/cli": "^1.15.2",
|
|
30
30
|
"@graphql-codegen/typescript": "^1.15.2",
|
|
31
31
|
"@graphql-codegen/typescript-operations": "^1.15.2",
|
|
32
32
|
"@graphql-codegen/typescript-resolvers": "^1.15.2",
|
|
33
|
-
"@types/node": "^
|
|
33
|
+
"@types/node": "^17.0.5",
|
|
34
34
|
"graphql": "^15.4.0",
|
|
35
35
|
"pg": "^8.5.0",
|
|
36
36
|
"uvu": "^0.5.1"
|
package/src/SystemContainer.ts
CHANGED
|
@@ -9,37 +9,33 @@ import {
|
|
|
9
9
|
import { MigrationsRunner } from '@contember/database-migrations'
|
|
10
10
|
import { DatabaseCredentials } from '@contember/database'
|
|
11
11
|
import {
|
|
12
|
-
ContentEventsApplier,
|
|
13
|
-
CreatedRowReferenceDependencyBuilder,
|
|
14
|
-
DeletedRowReferenceDependencyBuilder,
|
|
15
|
-
DependencyBuilderList,
|
|
16
|
-
DiffBuilder,
|
|
17
12
|
EntitiesSelector,
|
|
13
|
+
EventResponseBuilder,
|
|
18
14
|
ExecutedMigrationsResolver,
|
|
19
|
-
|
|
15
|
+
IdentityFetcher,
|
|
20
16
|
MigrationAlterer,
|
|
21
17
|
MigrationExecutor,
|
|
22
18
|
PermissionsFactory,
|
|
23
19
|
ProjectInitializer,
|
|
24
20
|
ProjectMigrator,
|
|
25
21
|
ProjectTruncateExecutor,
|
|
26
|
-
SameRowDependencyBuilder,
|
|
27
22
|
SchemaVersionBuilder,
|
|
28
23
|
StageCreator,
|
|
29
|
-
TransactionDependencyBuilder,
|
|
30
24
|
} from './model'
|
|
31
25
|
import { UuidProvider } from './utils'
|
|
32
26
|
import {
|
|
27
|
+
EventsQueryResolver,
|
|
33
28
|
ExecutedMigrationsQueryResolver,
|
|
34
29
|
MigrateMutationResolver,
|
|
30
|
+
MigrationAlterMutationResolver,
|
|
35
31
|
ResolverContextFactory,
|
|
36
32
|
ResolverFactory,
|
|
37
33
|
StagesQueryResolver,
|
|
38
34
|
TruncateMutationResolver,
|
|
39
35
|
} from './resolvers'
|
|
40
36
|
import { ClientBase } from 'pg'
|
|
41
|
-
import {
|
|
42
|
-
import {
|
|
37
|
+
import { MigrationArgs } from './migrations'
|
|
38
|
+
import { EventOldValuesResolver } from './resolvers/types'
|
|
43
39
|
|
|
44
40
|
export interface SystemContainer {
|
|
45
41
|
systemResolversFactory: ResolverFactory
|
|
@@ -50,15 +46,14 @@ export interface SystemContainer {
|
|
|
50
46
|
systemDbMigrationsRunnerFactory: SystemDbMigrationsRunnerFactory
|
|
51
47
|
}
|
|
52
48
|
|
|
53
|
-
export type SystemDbMigrationsRunnerFactory = (db: DatabaseCredentials, dbClient: ClientBase) => MigrationsRunner
|
|
49
|
+
export type SystemDbMigrationsRunnerFactory = (db: DatabaseCredentials, dbClient: ClientBase) => MigrationsRunner<MigrationArgs>
|
|
54
50
|
|
|
55
51
|
type Args = {
|
|
56
52
|
providers: UuidProvider
|
|
57
53
|
modificationHandlerFactory: ModificationHandlerFactory
|
|
58
54
|
entitiesSelector: EntitiesSelector
|
|
59
|
-
|
|
55
|
+
systemDbMigrationsRunnerFactory: (db: DatabaseCredentials, dbClient: ClientBase) => MigrationsRunner<MigrationArgs>
|
|
60
56
|
identityFetcher: IdentityFetcher
|
|
61
|
-
systemDbMigrationsRunnerFactory: (db: DatabaseCredentials, dbClient: ClientBase) => MigrationsRunner
|
|
62
57
|
}
|
|
63
58
|
|
|
64
59
|
export class SystemContainerFactory {
|
|
@@ -80,6 +75,8 @@ export class SystemContainerFactory {
|
|
|
80
75
|
container.systemDbMigrationsRunnerFactory)
|
|
81
76
|
.addService('modificationHandlerFactory', () =>
|
|
82
77
|
container.modificationHandlerFactory)
|
|
78
|
+
.addService('identityFetcher', () =>
|
|
79
|
+
container.identityFetcher)
|
|
83
80
|
.addService('schemaMigrator', ({ modificationHandlerFactory }) =>
|
|
84
81
|
new SchemaMigrator(modificationHandlerFactory))
|
|
85
82
|
.addService('executedMigrationsResolver', ({}) =>
|
|
@@ -98,37 +95,32 @@ export class SystemContainerFactory {
|
|
|
98
95
|
new MigrationExecutor(modificationHandlerFactory))
|
|
99
96
|
.addService('migrationDescriber', ({ modificationHandlerFactory }) =>
|
|
100
97
|
new MigrationDescriber(modificationHandlerFactory))
|
|
101
|
-
.addService('dependencyBuilder', ({}) =>
|
|
102
|
-
new DependencyBuilderList([
|
|
103
|
-
new SameRowDependencyBuilder(),
|
|
104
|
-
new TransactionDependencyBuilder(),
|
|
105
|
-
new DeletedRowReferenceDependencyBuilder(),
|
|
106
|
-
new CreatedRowReferenceDependencyBuilder(),
|
|
107
|
-
]))
|
|
108
98
|
.addService('projectMigrator', ({ migrationDescriber, schemaVersionBuilder, executedMigrationsResolver }) =>
|
|
109
99
|
new ProjectMigrator(migrationDescriber, schemaVersionBuilder, executedMigrationsResolver))
|
|
110
100
|
.addService('stageCreator', () =>
|
|
111
101
|
new StageCreator())
|
|
112
|
-
.addService('diffBuilder', ({ dependencyBuilder, schemaVersionBuilder }) =>
|
|
113
|
-
new DiffBuilder(dependencyBuilder, schemaVersionBuilder, container.entitiesSelector))
|
|
114
102
|
.addService('projectTruncateExecutor', () =>
|
|
115
103
|
new ProjectTruncateExecutor())
|
|
116
104
|
.addService('migrationAlterer', () =>
|
|
117
105
|
new MigrationAlterer())
|
|
106
|
+
.addService('eventResponseBuilder', ({ identityFetcher }) =>
|
|
107
|
+
new EventResponseBuilder(identityFetcher))
|
|
118
108
|
.addService('stagesQueryResolver', () =>
|
|
119
109
|
new StagesQueryResolver())
|
|
120
110
|
.addService('executedMigrationsQueryResolver', () =>
|
|
121
111
|
new ExecutedMigrationsQueryResolver())
|
|
122
|
-
.addService('historyEventResponseBuilder', () =>
|
|
123
|
-
new HistoryEventResponseBuilder(container.identityFetcher))
|
|
124
112
|
.addService('migrateMutationResolver', ({ projectMigrator }) =>
|
|
125
113
|
new MigrateMutationResolver(projectMigrator))
|
|
126
114
|
.addService('truncateMutationResolver', ({ projectTruncateExecutor }) =>
|
|
127
115
|
new TruncateMutationResolver(projectTruncateExecutor))
|
|
128
116
|
.addService('migrationAlterMutationResolver', ({ migrationAlterer }) =>
|
|
129
117
|
new MigrationAlterMutationResolver(migrationAlterer))
|
|
130
|
-
.addService('
|
|
131
|
-
new
|
|
118
|
+
.addService('eventsQueryResolver', ({ eventResponseBuilder }) =>
|
|
119
|
+
new EventsQueryResolver(eventResponseBuilder))
|
|
120
|
+
.addService('eventOldValuesResolver', () =>
|
|
121
|
+
new EventOldValuesResolver())
|
|
122
|
+
.addService('systemResolversFactory', ({ stagesQueryResolver, executedMigrationsQueryResolver, migrateMutationResolver, truncateMutationResolver, migrationAlterMutationResolver, eventsQueryResolver, eventOldValuesResolver }) =>
|
|
123
|
+
new ResolverFactory(stagesQueryResolver, executedMigrationsQueryResolver, migrateMutationResolver, truncateMutationResolver, migrationAlterMutationResolver, eventsQueryResolver, eventOldValuesResolver))
|
|
132
124
|
.addService('resolverContextFactory', ({ authorizator, schemaVersionBuilder }) =>
|
|
133
125
|
new ResolverContextFactory(authorizator, schemaVersionBuilder))
|
|
134
126
|
.addService('projectInitializer', ({ projectMigrator, stageCreator, systemDbMigrationsRunnerFactory, schemaVersionBuilder }) =>
|
package/src/index.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { unnamedIdentity } from './helpers'
|
|
2
2
|
import { ProjectConfig, StageConfig } from '../types'
|
|
3
3
|
import { ProjectMigrator, SchemaVersionBuilder } from './migrations'
|
|
4
|
-
import {
|
|
4
|
+
import { StageCreator } from './stages'
|
|
5
5
|
import { DatabaseContext, DatabaseContextFactory } from './database'
|
|
6
6
|
import { SystemDbMigrationsRunnerFactory } from '../SystemContainer'
|
|
7
7
|
import {
|
|
@@ -11,7 +11,6 @@ import {
|
|
|
11
11
|
retryTransaction,
|
|
12
12
|
SingleConnection,
|
|
13
13
|
} from '@contember/database'
|
|
14
|
-
import { MigrationArgs } from '../migrations'
|
|
15
14
|
import { createDatabaseIfNotExists, createPgClient } from '@contember/database-migrations'
|
|
16
15
|
import { Logger } from '@contember/engine-common'
|
|
17
16
|
import { Migration } from '@contember/schema-migrations'
|
|
@@ -43,7 +42,7 @@ export class ProjectInitializer {
|
|
|
43
42
|
.create(unnamedIdentity)
|
|
44
43
|
|
|
45
44
|
const schemaResolver = () => this.schemaVersionBuilder.buildSchema(dbContextMigrations)
|
|
46
|
-
await this.systemDbMigrationsRunnerFactory(project.db, pgClient).migrate
|
|
45
|
+
await this.systemDbMigrationsRunnerFactory(project.db, pgClient).migrate(
|
|
47
46
|
logger.write.bind(logger),
|
|
48
47
|
{
|
|
49
48
|
schemaResolver,
|
|
@@ -67,11 +66,10 @@ export class ProjectInitializer {
|
|
|
67
66
|
logger: Logger,
|
|
68
67
|
migrations?: Migration[],
|
|
69
68
|
) {
|
|
70
|
-
const stageTree = createStageTree(project)
|
|
71
|
-
const root = stageTree.getRoot()
|
|
72
69
|
|
|
73
|
-
|
|
74
|
-
|
|
70
|
+
logger.group(`Creating stages`)
|
|
71
|
+
for (const stage of project.stages) {
|
|
72
|
+
const created = await this.stageCreator.createStage(db, stage)
|
|
75
73
|
if (created) {
|
|
76
74
|
logger.write(`Created stage ${stage.slug} `)
|
|
77
75
|
} else {
|
|
@@ -79,15 +77,6 @@ export class ProjectInitializer {
|
|
|
79
77
|
}
|
|
80
78
|
}
|
|
81
79
|
|
|
82
|
-
const createRecursive = async (parent: StageConfig | null, stage: StageConfig) => {
|
|
83
|
-
await createStage(parent, stage)
|
|
84
|
-
for (const childStage of stageTree.getChildren(stage)) {
|
|
85
|
-
await createRecursive(stage, childStage)
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
logger.group(`Creating stages`)
|
|
90
|
-
await createRecursive(null, root)
|
|
91
80
|
logger.groupEnd()
|
|
92
81
|
if (migrations) {
|
|
93
82
|
logger.group(`Executing project migrations`)
|
|
@@ -5,14 +5,6 @@ export namespace AuthorizationActions {
|
|
|
5
5
|
project = 'project',
|
|
6
6
|
}
|
|
7
7
|
|
|
8
|
-
export const PROJECT_RELEASE_ANY = Authorizator.createAction(Resources.project, 'releaseAny')
|
|
9
|
-
export const PROJECT_RELEASE_SOME = Authorizator.createAction(Resources.project, 'releaseSome')
|
|
10
|
-
|
|
11
|
-
export const PROJECT_REBASE_ANY = Authorizator.createAction(Resources.project, 'rebaseAny')
|
|
12
|
-
|
|
13
|
-
export const PROJECT_DIFF_ANY = Authorizator.createAction(Resources.project, 'diffAny')
|
|
14
|
-
export const PROJECT_DIFF_SOME = Authorizator.createAction(Resources.project, 'diffSome')
|
|
15
|
-
|
|
16
8
|
export const PROJECT_HISTORY_ANY = Authorizator.createAction(Resources.project, 'historyAny')
|
|
17
9
|
|
|
18
10
|
export const PROJECT_MIGRATE = Authorizator.createAction(Resources.project, 'migrate')
|
|
@@ -13,32 +13,11 @@ export class StagePermissionsFactory {
|
|
|
13
13
|
|
|
14
14
|
const rolePermissions = this.createRolePermissions(filteredSchema.acl)
|
|
15
15
|
Object.entries(rolePermissions).forEach(([role, value]) => {
|
|
16
|
-
// diff
|
|
17
|
-
if (value.diff === Acl.SystemPermissionsLevel.some) {
|
|
18
|
-
permissions.allow(role, AuthorizationActions.PROJECT_DIFF_SOME)
|
|
19
|
-
} else if (value.diff === Acl.SystemPermissionsLevel.any) {
|
|
20
|
-
permissions.allow(role, AuthorizationActions.PROJECT_DIFF_ANY)
|
|
21
|
-
permissions.allow(role, AuthorizationActions.PROJECT_DIFF_SOME)
|
|
22
|
-
}
|
|
23
|
-
|
|
24
16
|
// history
|
|
25
17
|
if (value.history === Acl.SystemPermissionsLevel.any) {
|
|
26
18
|
permissions.allow(role, AuthorizationActions.PROJECT_HISTORY_ANY)
|
|
27
19
|
}
|
|
28
20
|
|
|
29
|
-
// release
|
|
30
|
-
if (value.release === Acl.SystemPermissionsLevel.some) {
|
|
31
|
-
permissions.allow(role, AuthorizationActions.PROJECT_RELEASE_SOME)
|
|
32
|
-
} else if (value.release === Acl.SystemPermissionsLevel.any) {
|
|
33
|
-
permissions.allow(role, AuthorizationActions.PROJECT_RELEASE_ANY)
|
|
34
|
-
permissions.allow(role, AuthorizationActions.PROJECT_RELEASE_SOME)
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
// rebase
|
|
38
|
-
if (value.rebase === Acl.SystemPermissionsLevel.any) {
|
|
39
|
-
permissions.allow(role, AuthorizationActions.PROJECT_REBASE_ANY)
|
|
40
|
-
}
|
|
41
|
-
|
|
42
21
|
// migrate
|
|
43
22
|
if (value.migrate) {
|
|
44
23
|
permissions.allow(role, AuthorizationActions.PROJECT_MIGRATE)
|
|
@@ -17,11 +17,10 @@ export class CreateOrUpdateStageCommand implements Command<boolean> {
|
|
|
17
17
|
.onConflict(ConflictActionType.update, ['slug'], {
|
|
18
18
|
name: this.stage.name,
|
|
19
19
|
})
|
|
20
|
-
.returning('event_id')
|
|
21
20
|
.execute(db)
|
|
22
21
|
|
|
23
22
|
await db.query('CREATE SCHEMA IF NOT EXISTS ' + wrapIdentifier(formatSchemaName(this.stage)))
|
|
24
23
|
|
|
25
|
-
return result
|
|
24
|
+
return result > 0
|
|
26
25
|
}
|
|
27
26
|
}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { Client } from '@contember/database'
|
|
2
|
+
|
|
1
3
|
export interface IdentityFetcher {
|
|
2
|
-
fetchIdentities(ids: string[]): Promise<TenantIdentity[]>
|
|
4
|
+
fetchIdentities(client: Client, ids: string[]): Promise<TenantIdentity[]>
|
|
3
5
|
}
|
|
4
6
|
|
|
5
7
|
export type TenantIdentity = PersonIdentity | ApiKeyIdentity
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './IdentityFetcher'
|
|
@@ -1,32 +1,28 @@
|
|
|
1
1
|
import { AnyEvent, EventType } from '@contember/engine-common'
|
|
2
|
-
import {
|
|
3
|
-
HistoryCreateEvent,
|
|
4
|
-
HistoryDeleteEvent,
|
|
5
|
-
HistoryEvent as ApiEvent,
|
|
6
|
-
HistoryEventType as ApiEventType,
|
|
7
|
-
HistoryUpdateEvent,
|
|
8
|
-
} from '../../schema'
|
|
2
|
+
import { CreateEvent, DeleteEvent, EventType as ApiEventType, UpdateEvent } from '../../schema'
|
|
9
3
|
import { assertNever } from '../../utils'
|
|
10
|
-
import { IdentityFetcher } from '../dependencies
|
|
4
|
+
import { IdentityFetcher } from '../dependencies'
|
|
11
5
|
import { formatIdentity } from './identityUtils'
|
|
12
6
|
import { appendCreateSpecificData, appendDeleteSpecificData, appendUpdateSpecificData } from './EventResponseHelper'
|
|
7
|
+
import { Client } from '@contember/database'
|
|
13
8
|
|
|
14
|
-
export class
|
|
9
|
+
export class EventResponseBuilder {
|
|
15
10
|
constructor(private readonly identityFetcher: IdentityFetcher) {}
|
|
16
11
|
|
|
17
|
-
public async buildResponse(events: AnyEvent[]): Promise<
|
|
12
|
+
public async buildResponse(tenantDb: Client, events: AnyEvent[]): Promise<(CreateEvent | DeleteEvent | UpdateEvent)[]> {
|
|
18
13
|
const apiEventTypeMapping = {
|
|
19
14
|
[EventType.create]: ApiEventType.Create,
|
|
20
15
|
[EventType.update]: ApiEventType.Update,
|
|
21
16
|
[EventType.delete]: ApiEventType.Delete,
|
|
22
17
|
}
|
|
23
18
|
const identityIds = events.map(it => it.identityId).filter((it, index, ids) => ids.indexOf(it) === index)
|
|
24
|
-
const identities = await this.identityFetcher.fetchIdentities(identityIds)
|
|
19
|
+
const identities = await this.identityFetcher.fetchIdentities(tenantDb, identityIds)
|
|
25
20
|
const identitiesMap = Object.fromEntries(identities.map(it => [it.identityId, it]))
|
|
26
21
|
|
|
27
22
|
return events.map(it => {
|
|
28
23
|
const commonData = {
|
|
29
24
|
createdAt: it.createdAt,
|
|
25
|
+
appliedAt: it.appliedAt,
|
|
30
26
|
id: it.id,
|
|
31
27
|
type: apiEventTypeMapping[it.type],
|
|
32
28
|
description: this.formatDescription(it),
|
|
@@ -36,11 +32,11 @@ export class HistoryEventResponseBuilder {
|
|
|
36
32
|
}
|
|
37
33
|
switch (it.type) {
|
|
38
34
|
case EventType.create:
|
|
39
|
-
return (():
|
|
35
|
+
return ((): CreateEvent => appendCreateSpecificData(commonData, it))()
|
|
40
36
|
case EventType.update:
|
|
41
|
-
return (():
|
|
37
|
+
return ((): UpdateEvent => appendUpdateSpecificData(commonData, it))()
|
|
42
38
|
case EventType.delete:
|
|
43
|
-
return (():
|
|
39
|
+
return ((): DeleteEvent => appendDeleteSpecificData(commonData, it))()
|
|
44
40
|
}
|
|
45
41
|
assertNever(it)
|
|
46
42
|
})
|
|
@@ -49,11 +45,11 @@ export class HistoryEventResponseBuilder {
|
|
|
49
45
|
private formatDescription(event: AnyEvent): string {
|
|
50
46
|
switch (event.type) {
|
|
51
47
|
case EventType.create:
|
|
52
|
-
return `Creating ${event.tableName}#${event.rowId}`
|
|
48
|
+
return `Creating ${event.tableName}#${event.rowId.join(';')}`
|
|
53
49
|
case EventType.update:
|
|
54
|
-
return `Updating ${event.tableName}#${event.rowId}`
|
|
50
|
+
return `Updating ${event.tableName}#${event.rowId.join(';')}`
|
|
55
51
|
case EventType.delete:
|
|
56
|
-
return `Deleting ${event.tableName}#${event.rowId}`
|
|
52
|
+
return `Deleting ${event.tableName}#${event.rowId.join(';')}`
|
|
57
53
|
default:
|
|
58
54
|
return assertNever(event)
|
|
59
55
|
}
|
|
@@ -3,7 +3,7 @@ import { AnyEvent, ContentEvent, CreateEvent, DeleteEvent, UpdateEvent } from '@
|
|
|
3
3
|
export const appendUpdateSpecificData = <T>(commonData: T, event: UpdateEvent) => ({
|
|
4
4
|
...commonData,
|
|
5
5
|
tableName: event.tableName,
|
|
6
|
-
|
|
6
|
+
primaryKey: event.rowId,
|
|
7
7
|
diffValues: event.values,
|
|
8
8
|
oldValues: {},
|
|
9
9
|
})
|
|
@@ -11,13 +11,13 @@ export const appendUpdateSpecificData = <T>(commonData: T, event: UpdateEvent) =
|
|
|
11
11
|
export const appendCreateSpecificData = <T>(commonData: T, event: CreateEvent) => ({
|
|
12
12
|
...commonData,
|
|
13
13
|
tableName: event.tableName,
|
|
14
|
-
|
|
14
|
+
primaryKey: event.rowId,
|
|
15
15
|
newValues: event.values,
|
|
16
16
|
})
|
|
17
17
|
|
|
18
18
|
export const appendDeleteSpecificData = <T>(commonData: T, event: DeleteEvent) => ({
|
|
19
19
|
...commonData,
|
|
20
20
|
tableName: event.tableName,
|
|
21
|
-
|
|
21
|
+
primaryKey: event.rowId,
|
|
22
22
|
oldValues: {},
|
|
23
23
|
})
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import { EventType } from '@contember/engine-common'
|
|
2
1
|
import { wrapIdentifier } from '@contember/database'
|
|
3
2
|
import { Schema } from '@contember/schema'
|
|
4
3
|
import { Migration, ModificationHandlerFactory } from '@contember/schema-migrations'
|
|
5
4
|
import { createMigrationBuilder } from '@contember/database-migrations'
|
|
6
5
|
import { Stage } from '../dtos'
|
|
7
|
-
import { UpdateStageEventCommand } from '../commands'
|
|
8
6
|
import { formatSchemaName } from '../helpers'
|
|
9
7
|
import { DatabaseContext } from '../database'
|
|
10
8
|
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { createStageTree, StageTree } from '../stages'
|
|
2
1
|
import { Migration, MigrationDescriber } from '@contember/schema-migrations'
|
|
3
2
|
import { Client, QueryError, wrapIdentifier } from '@contember/database'
|
|
4
3
|
import { formatSchemaName } from '../helpers'
|
|
@@ -10,7 +9,6 @@ import { ExecutedMigrationsResolver } from './ExecutedMigrationsResolver'
|
|
|
10
9
|
import { MigrateErrorCode } from '../../schema'
|
|
11
10
|
import { ProjectConfig } from '../../types'
|
|
12
11
|
import { SchemaVersionBuilder } from './SchemaVersionBuilder'
|
|
13
|
-
import { StagingDisabledError } from '../../StagingDisabledError'
|
|
14
12
|
|
|
15
13
|
export class ProjectMigrator {
|
|
16
14
|
constructor(
|
|
@@ -26,7 +24,6 @@ export class ProjectMigrator {
|
|
|
26
24
|
logger: (message: string) => void,
|
|
27
25
|
ignoreOrder: boolean = false,
|
|
28
26
|
) {
|
|
29
|
-
const stageTree = createStageTree(project)
|
|
30
27
|
if (migrationsToExecute.length === 0) {
|
|
31
28
|
return
|
|
32
29
|
}
|
|
@@ -35,10 +32,6 @@ export class ProjectMigrator {
|
|
|
35
32
|
|
|
36
33
|
const sorted = [...migrationsToExecute].sort((a, b) => a.version.localeCompare(b.version))
|
|
37
34
|
|
|
38
|
-
const rootStage = stageTree.getRoot()
|
|
39
|
-
if (stageTree.getChildren(rootStage).length !== 0) {
|
|
40
|
-
throw new StagingDisabledError()
|
|
41
|
-
}
|
|
42
35
|
for (const migration of sorted) {
|
|
43
36
|
logger(`Executing migration ${migration.name}...`)
|
|
44
37
|
const formatVersion = migration.formatVersion
|
|
@@ -46,7 +39,7 @@ export class ProjectMigrator {
|
|
|
46
39
|
for (const modification of migration.modifications) {
|
|
47
40
|
[schema] = await this.applyModification(
|
|
48
41
|
db.client,
|
|
49
|
-
|
|
42
|
+
project.stages,
|
|
50
43
|
schema,
|
|
51
44
|
modification,
|
|
52
45
|
formatVersion,
|
|
@@ -93,19 +86,20 @@ export class ProjectMigrator {
|
|
|
93
86
|
|
|
94
87
|
private async applyModification(
|
|
95
88
|
db: Client,
|
|
96
|
-
|
|
89
|
+
stages: StageWithoutEvent[],
|
|
97
90
|
schema: Schema,
|
|
98
91
|
modification: Migration.Modification,
|
|
99
92
|
formatVersion: number,
|
|
100
93
|
migrationVersion: string,
|
|
101
94
|
): Promise<[Schema]> {
|
|
102
|
-
const stage = stageTree.getRoot()
|
|
103
95
|
const {
|
|
104
96
|
sql,
|
|
105
97
|
schema: newSchema,
|
|
106
98
|
handler,
|
|
107
99
|
} = await this.migrationDescriber.describeModification(schema, modification, formatVersion)
|
|
108
|
-
|
|
100
|
+
for (const stage of stages) {
|
|
101
|
+
await this.executeOnStage(db, stage, sql, migrationVersion)
|
|
102
|
+
}
|
|
109
103
|
return [newSchema]
|
|
110
104
|
}
|
|
111
105
|
|
|
@@ -7,7 +7,7 @@ import { normalizeSchema } from '@contember/schema-utils'
|
|
|
7
7
|
|
|
8
8
|
export type VersionedSchema = Schema & { version: string; notNormalized: Schema & { version: string } }
|
|
9
9
|
|
|
10
|
-
const emptyVersionedSchema = { ...emptySchema, version: '', notNormalized: { ...emptySchema, version: '' } }
|
|
10
|
+
const emptyVersionedSchema = { ...normalizeSchema(emptySchema), version: '', notNormalized: { ...emptySchema, version: '' } }
|
|
11
11
|
|
|
12
12
|
export class SchemaVersionBuilder {
|
|
13
13
|
constructor(
|
|
@@ -4,46 +4,49 @@ import { assertNever } from '../../../utils'
|
|
|
4
4
|
export type EventRow = {
|
|
5
5
|
id: string
|
|
6
6
|
type: EventType
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
table_name: string
|
|
8
|
+
row_ids: string[]
|
|
9
|
+
values: Record<string, any>
|
|
9
10
|
created_at: Date
|
|
11
|
+
applied_at: Date
|
|
10
12
|
identity_id: string
|
|
11
13
|
transaction_id: string
|
|
12
|
-
index: number
|
|
13
14
|
}
|
|
14
15
|
|
|
15
16
|
export const createEventsFromRows = (rows: EventRow[]): AnyEvent[] => {
|
|
16
17
|
return rows.map(event => {
|
|
17
|
-
const data = event.data
|
|
18
18
|
switch (event.type) {
|
|
19
19
|
case EventType.create:
|
|
20
20
|
return new CreateEvent(
|
|
21
21
|
event.id,
|
|
22
22
|
event.created_at,
|
|
23
|
+
event.applied_at,
|
|
23
24
|
event.identity_id,
|
|
24
25
|
event.transaction_id,
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
event.row_ids,
|
|
27
|
+
event.table_name,
|
|
28
|
+
event.values,
|
|
28
29
|
)
|
|
29
30
|
case EventType.update:
|
|
30
31
|
return new UpdateEvent(
|
|
31
32
|
event.id,
|
|
32
33
|
event.created_at,
|
|
34
|
+
event.applied_at,
|
|
33
35
|
event.identity_id,
|
|
34
36
|
event.transaction_id,
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
37
|
+
event.row_ids,
|
|
38
|
+
event.table_name,
|
|
39
|
+
event.values,
|
|
38
40
|
)
|
|
39
41
|
case EventType.delete:
|
|
40
42
|
return new DeleteEvent(
|
|
41
43
|
event.id,
|
|
42
44
|
event.created_at,
|
|
45
|
+
event.applied_at,
|
|
43
46
|
event.identity_id,
|
|
44
47
|
event.transaction_id,
|
|
45
|
-
|
|
46
|
-
|
|
48
|
+
event.row_ids,
|
|
49
|
+
event.table_name,
|
|
47
50
|
)
|
|
48
51
|
default:
|
|
49
52
|
assertNever(event.type)
|