@contember/engine-system-api 2.0.0-alpha.10 → 2.0.0-alpha.13
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/development/index.cjs +2 -2
- package/dist/development/index.js +2 -2
- package/dist/development/src/SystemContainer.cjs +4 -3
- package/dist/development/src/SystemContainer.cjs.map +1 -1
- package/dist/development/src/SystemContainer.js +4 -3
- package/dist/development/src/SystemContainer.js.map +1 -1
- package/dist/development/src/migrations/2020-05-06-150000-composed-primary.cjs +1 -2
- package/dist/development/src/migrations/2020-05-06-150000-composed-primary.cjs.map +1 -1
- package/dist/development/src/migrations/2020-05-06-150000-composed-primary.js +1 -2
- package/dist/development/src/migrations/2020-05-06-150000-composed-primary.js.map +1 -1
- package/dist/development/src/migrations/2020-06-01-103000-event-trigger-perf.cjs +1 -2
- package/dist/development/src/migrations/2020-06-01-103000-event-trigger-perf.cjs.map +1 -1
- package/dist/development/src/migrations/2020-06-01-103000-event-trigger-perf.js +1 -2
- package/dist/development/src/migrations/2020-06-01-103000-event-trigger-perf.js.map +1 -1
- package/dist/development/src/migrations/2021-05-07-155800-event-log-rework.cjs +1 -2
- package/dist/development/src/migrations/2021-05-07-155800-event-log-rework.cjs.map +1 -1
- package/dist/development/src/migrations/2021-05-07-155800-event-log-rework.js +1 -2
- package/dist/development/src/migrations/2021-05-07-155800-event-log-rework.js.map +1 -1
- package/dist/development/src/migrations/2021-05-19-1232000-event-log-fix-constraint.cjs +1 -2
- package/dist/development/src/migrations/2021-05-19-1232000-event-log-fix-constraint.cjs.map +1 -1
- package/dist/development/src/migrations/2021-05-19-1232000-event-log-fix-constraint.js +1 -2
- package/dist/development/src/migrations/2021-05-19-1232000-event-log-fix-constraint.js.map +1 -1
- package/dist/development/src/migrations/2022-10-03-110000-table-on-delete.cjs +1 -1
- package/dist/development/src/migrations/2022-10-03-110000-table-on-delete.cjs.map +1 -1
- package/dist/development/src/migrations/2022-10-03-110000-table-on-delete.js +1 -1
- package/dist/development/src/migrations/2022-10-03-110000-table-on-delete.js.map +1 -1
- package/dist/development/src/migrations/2023-09-11-174000-fix-on-delete.cjs +1 -1
- package/dist/development/src/migrations/2023-09-11-174000-fix-on-delete.cjs.map +1 -1
- package/dist/development/src/migrations/2023-09-11-174000-fix-on-delete.js +1 -1
- package/dist/development/src/migrations/2023-09-11-174000-fix-on-delete.js.map +1 -1
- package/dist/development/src/migrations/2023-10-19-173000-fix-unique.cjs +1 -1
- package/dist/development/src/migrations/2023-10-19-173000-fix-unique.cjs.map +1 -1
- package/dist/development/src/migrations/2023-10-19-173000-fix-unique.js +1 -1
- package/dist/development/src/migrations/2023-10-19-173000-fix-unique.js.map +1 -1
- package/dist/development/src/migrations/2024-06-28-153000-schema.cjs +18 -0
- package/dist/development/src/migrations/2024-06-28-153000-schema.cjs.map +1 -0
- package/dist/development/src/migrations/2024-06-28-153000-schema.js +19 -0
- package/dist/development/src/migrations/2024-06-28-153000-schema.js.map +1 -0
- package/dist/development/src/migrations/2024-06-28-153001-schema-init.cjs +12 -0
- package/dist/development/src/migrations/2024-06-28-153001-schema-init.cjs.map +1 -0
- package/dist/development/src/migrations/2024-06-28-153001-schema-init.js +13 -0
- package/dist/development/src/migrations/2024-06-28-153001-schema-init.js.map +1 -0
- package/dist/development/src/migrations/2024-07-29-150000-event-data-index.cjs +11 -0
- package/dist/development/src/migrations/2024-07-29-150000-event-data-index.cjs.map +1 -0
- package/dist/development/src/migrations/2024-07-29-150000-event-data-index.js +12 -0
- package/dist/development/src/migrations/2024-07-29-150000-event-data-index.js.map +1 -0
- package/dist/development/src/migrations/runner.cjs +11 -5
- package/dist/development/src/migrations/runner.cjs.map +1 -1
- package/dist/development/src/migrations/runner.js +11 -5
- package/dist/development/src/migrations/runner.js.map +1 -1
- package/dist/development/src/migrations/snapshot.cjs +17 -1
- package/dist/development/src/migrations/snapshot.cjs.map +1 -1
- package/dist/development/src/migrations/snapshot.js +17 -1
- package/dist/development/src/migrations/snapshot.js.map +1 -1
- package/dist/development/src/model/authorization/AuthorizationActions.cjs +1 -0
- package/dist/development/src/model/authorization/AuthorizationActions.cjs.map +1 -1
- package/dist/development/src/model/authorization/AuthorizationActions.js +1 -0
- package/dist/development/src/model/authorization/AuthorizationActions.js.map +1 -1
- package/dist/development/src/model/authorization/PermissionsFactory.cjs +1 -0
- package/dist/development/src/model/authorization/PermissionsFactory.cjs.map +1 -1
- package/dist/development/src/model/authorization/PermissionsFactory.js +1 -0
- package/dist/development/src/model/authorization/PermissionsFactory.js.map +1 -1
- package/dist/development/src/model/authorization/StagePermissionsFactory.cjs +4 -5
- package/dist/development/src/model/authorization/StagePermissionsFactory.cjs.map +1 -1
- package/dist/development/src/model/authorization/StagePermissionsFactory.js +4 -5
- package/dist/development/src/model/authorization/StagePermissionsFactory.js.map +1 -1
- package/dist/development/src/model/authorization/StageScope.cjs +2 -2
- package/dist/development/src/model/authorization/StageScope.cjs.map +1 -1
- package/dist/development/src/model/authorization/StageScope.js +2 -2
- package/dist/development/src/model/authorization/StageScope.js.map +1 -1
- package/dist/development/src/model/commands/schema/SaveSchemaCommand.cjs +28 -0
- package/dist/development/src/model/commands/schema/SaveSchemaCommand.cjs.map +1 -0
- package/dist/development/src/model/commands/schema/SaveSchemaCommand.js +28 -0
- package/dist/development/src/model/commands/schema/SaveSchemaCommand.js.map +1 -0
- package/dist/development/src/model/migrations/MigrationAlterer.cjs +10 -0
- package/dist/development/src/model/migrations/MigrationAlterer.cjs.map +1 -1
- package/dist/development/src/model/migrations/MigrationAlterer.js +10 -0
- package/dist/development/src/model/migrations/MigrationAlterer.js.map +1 -1
- package/dist/development/src/model/migrations/ProjectMigrator.cjs +29 -10
- package/dist/development/src/model/migrations/ProjectMigrator.cjs.map +1 -1
- package/dist/development/src/model/migrations/ProjectMigrator.js +30 -11
- package/dist/development/src/model/migrations/ProjectMigrator.js.map +1 -1
- package/dist/development/src/model/migrations/SchemaProvider.cjs +58 -0
- package/dist/development/src/model/migrations/SchemaProvider.cjs.map +1 -0
- package/dist/development/src/model/migrations/SchemaProvider.js +58 -0
- package/dist/development/src/model/migrations/SchemaProvider.js.map +1 -0
- package/dist/development/src/model/queries/events/EventsQuery.cjs +10 -14
- package/dist/development/src/model/queries/events/EventsQuery.cjs.map +1 -1
- package/dist/development/src/model/queries/events/EventsQuery.js +10 -14
- package/dist/development/src/model/queries/events/EventsQuery.js.map +1 -1
- package/dist/development/src/model/queries/schema/SchemaQuery.cjs +34 -0
- package/dist/development/src/model/queries/schema/SchemaQuery.cjs.map +1 -0
- package/dist/development/src/model/queries/schema/SchemaQuery.js +34 -0
- package/dist/development/src/model/queries/schema/SchemaQuery.js.map +1 -0
- package/dist/development/src/resolvers/ResolverFactory.cjs +6 -2
- package/dist/development/src/resolvers/ResolverFactory.cjs.map +1 -1
- package/dist/development/src/resolvers/ResolverFactory.js +7 -3
- package/dist/development/src/resolvers/ResolverFactory.js.map +1 -1
- package/dist/development/src/resolvers/SystemResolverContext.cjs +5 -5
- package/dist/development/src/resolvers/SystemResolverContext.cjs.map +1 -1
- package/dist/development/src/resolvers/SystemResolverContext.js +5 -5
- package/dist/development/src/resolvers/SystemResolverContext.js.map +1 -1
- package/dist/development/src/resolvers/mutation/MigrateMutationResolver.cjs +0 -1
- package/dist/development/src/resolvers/mutation/MigrateMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/MigrateMutationResolver.js +0 -1
- package/dist/development/src/resolvers/mutation/MigrateMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/MigrationAlterMutationResolver.cjs +0 -1
- package/dist/development/src/resolvers/mutation/MigrationAlterMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/MigrationAlterMutationResolver.js +0 -1
- package/dist/development/src/resolvers/mutation/MigrationAlterMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/TruncateMutationResolver.cjs +1 -1
- package/dist/development/src/resolvers/mutation/TruncateMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/TruncateMutationResolver.js +1 -1
- package/dist/development/src/resolvers/mutation/TruncateMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/query/EventsQueryResolver.cjs +0 -1
- package/dist/development/src/resolvers/query/EventsQueryResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/query/EventsQueryResolver.js +0 -1
- package/dist/development/src/resolvers/query/EventsQueryResolver.js.map +1 -1
- package/dist/development/src/resolvers/query/ExecutedMigrationsQueryResolver.cjs +0 -1
- package/dist/development/src/resolvers/query/ExecutedMigrationsQueryResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/query/ExecutedMigrationsQueryResolver.js +0 -1
- package/dist/development/src/resolvers/query/ExecutedMigrationsQueryResolver.js.map +1 -1
- package/dist/development/src/resolvers/query/SchemaQueryResolver.cjs +23 -0
- package/dist/development/src/resolvers/query/SchemaQueryResolver.cjs.map +1 -0
- package/dist/development/src/resolvers/query/SchemaQueryResolver.js +23 -0
- package/dist/development/src/resolvers/query/SchemaQueryResolver.js.map +1 -0
- package/dist/development/src/resolvers/query/StagesQueryResolver.cjs +0 -1
- package/dist/development/src/resolvers/query/StagesQueryResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/query/StagesQueryResolver.js +0 -1
- package/dist/development/src/resolvers/query/StagesQueryResolver.js.map +1 -1
- package/dist/development/src/resolvers/types/OldValuesHelpers.cjs +0 -1
- package/dist/development/src/resolvers/types/OldValuesHelpers.cjs.map +1 -1
- package/dist/development/src/resolvers/types/OldValuesHelpers.js +0 -1
- package/dist/development/src/resolvers/types/OldValuesHelpers.js.map +1 -1
- package/dist/development/src/schema/system.graphql.cjs +3 -1
- package/dist/development/src/schema/system.graphql.cjs.map +1 -1
- package/dist/development/src/schema/system.graphql.js +3 -1
- package/dist/development/src/schema/system.graphql.js.map +1 -1
- package/dist/development/src/schema/types.cjs.map +1 -1
- package/dist/development/src/schema/types.js.map +1 -1
- package/dist/production/index.cjs +2 -2
- package/dist/production/index.js +2 -2
- package/dist/production/src/SystemContainer.cjs +4 -3
- package/dist/production/src/SystemContainer.cjs.map +1 -1
- package/dist/production/src/SystemContainer.js +4 -3
- package/dist/production/src/SystemContainer.js.map +1 -1
- package/dist/production/src/migrations/2020-05-06-150000-composed-primary.cjs +1 -2
- package/dist/production/src/migrations/2020-05-06-150000-composed-primary.cjs.map +1 -1
- package/dist/production/src/migrations/2020-05-06-150000-composed-primary.js +1 -2
- package/dist/production/src/migrations/2020-05-06-150000-composed-primary.js.map +1 -1
- package/dist/production/src/migrations/2020-06-01-103000-event-trigger-perf.cjs +1 -2
- package/dist/production/src/migrations/2020-06-01-103000-event-trigger-perf.cjs.map +1 -1
- package/dist/production/src/migrations/2020-06-01-103000-event-trigger-perf.js +1 -2
- package/dist/production/src/migrations/2020-06-01-103000-event-trigger-perf.js.map +1 -1
- package/dist/production/src/migrations/2021-05-07-155800-event-log-rework.cjs +1 -2
- package/dist/production/src/migrations/2021-05-07-155800-event-log-rework.cjs.map +1 -1
- package/dist/production/src/migrations/2021-05-07-155800-event-log-rework.js +1 -2
- package/dist/production/src/migrations/2021-05-07-155800-event-log-rework.js.map +1 -1
- package/dist/production/src/migrations/2021-05-19-1232000-event-log-fix-constraint.cjs +1 -2
- package/dist/production/src/migrations/2021-05-19-1232000-event-log-fix-constraint.cjs.map +1 -1
- package/dist/production/src/migrations/2021-05-19-1232000-event-log-fix-constraint.js +1 -2
- package/dist/production/src/migrations/2021-05-19-1232000-event-log-fix-constraint.js.map +1 -1
- package/dist/production/src/migrations/2022-10-03-110000-table-on-delete.cjs +1 -1
- package/dist/production/src/migrations/2022-10-03-110000-table-on-delete.cjs.map +1 -1
- package/dist/production/src/migrations/2022-10-03-110000-table-on-delete.js +1 -1
- package/dist/production/src/migrations/2022-10-03-110000-table-on-delete.js.map +1 -1
- package/dist/production/src/migrations/2023-09-11-174000-fix-on-delete.cjs +1 -1
- package/dist/production/src/migrations/2023-09-11-174000-fix-on-delete.cjs.map +1 -1
- package/dist/production/src/migrations/2023-09-11-174000-fix-on-delete.js +1 -1
- package/dist/production/src/migrations/2023-09-11-174000-fix-on-delete.js.map +1 -1
- package/dist/production/src/migrations/2023-10-19-173000-fix-unique.cjs +1 -1
- package/dist/production/src/migrations/2023-10-19-173000-fix-unique.cjs.map +1 -1
- package/dist/production/src/migrations/2023-10-19-173000-fix-unique.js +1 -1
- package/dist/production/src/migrations/2023-10-19-173000-fix-unique.js.map +1 -1
- package/dist/production/src/migrations/2024-06-28-153000-schema.cjs +18 -0
- package/dist/production/src/migrations/2024-06-28-153000-schema.cjs.map +1 -0
- package/dist/production/src/migrations/2024-06-28-153000-schema.js +19 -0
- package/dist/production/src/migrations/2024-06-28-153000-schema.js.map +1 -0
- package/dist/production/src/migrations/2024-06-28-153001-schema-init.cjs +12 -0
- package/dist/production/src/migrations/2024-06-28-153001-schema-init.cjs.map +1 -0
- package/dist/production/src/migrations/2024-06-28-153001-schema-init.js +13 -0
- package/dist/production/src/migrations/2024-06-28-153001-schema-init.js.map +1 -0
- package/dist/production/src/migrations/2024-07-29-150000-event-data-index.cjs +11 -0
- package/dist/production/src/migrations/2024-07-29-150000-event-data-index.cjs.map +1 -0
- package/dist/production/src/migrations/2024-07-29-150000-event-data-index.js +12 -0
- package/dist/production/src/migrations/2024-07-29-150000-event-data-index.js.map +1 -0
- package/dist/production/src/migrations/runner.cjs +11 -5
- package/dist/production/src/migrations/runner.cjs.map +1 -1
- package/dist/production/src/migrations/runner.js +11 -5
- package/dist/production/src/migrations/runner.js.map +1 -1
- package/dist/production/src/migrations/snapshot.cjs +17 -1
- package/dist/production/src/migrations/snapshot.cjs.map +1 -1
- package/dist/production/src/migrations/snapshot.js +17 -1
- package/dist/production/src/migrations/snapshot.js.map +1 -1
- package/dist/production/src/model/authorization/AuthorizationActions.cjs +1 -0
- package/dist/production/src/model/authorization/AuthorizationActions.cjs.map +1 -1
- package/dist/production/src/model/authorization/AuthorizationActions.js +1 -0
- package/dist/production/src/model/authorization/AuthorizationActions.js.map +1 -1
- package/dist/production/src/model/authorization/PermissionsFactory.cjs +1 -0
- package/dist/production/src/model/authorization/PermissionsFactory.cjs.map +1 -1
- package/dist/production/src/model/authorization/PermissionsFactory.js +1 -0
- package/dist/production/src/model/authorization/PermissionsFactory.js.map +1 -1
- package/dist/production/src/model/authorization/StagePermissionsFactory.cjs +4 -5
- package/dist/production/src/model/authorization/StagePermissionsFactory.cjs.map +1 -1
- package/dist/production/src/model/authorization/StagePermissionsFactory.js +4 -5
- package/dist/production/src/model/authorization/StagePermissionsFactory.js.map +1 -1
- package/dist/production/src/model/authorization/StageScope.cjs +2 -2
- package/dist/production/src/model/authorization/StageScope.cjs.map +1 -1
- package/dist/production/src/model/authorization/StageScope.js +2 -2
- package/dist/production/src/model/authorization/StageScope.js.map +1 -1
- package/dist/production/src/model/commands/schema/SaveSchemaCommand.cjs +28 -0
- package/dist/production/src/model/commands/schema/SaveSchemaCommand.cjs.map +1 -0
- package/dist/production/src/model/commands/schema/SaveSchemaCommand.js +28 -0
- package/dist/production/src/model/commands/schema/SaveSchemaCommand.js.map +1 -0
- package/dist/production/src/model/migrations/MigrationAlterer.cjs +10 -0
- package/dist/production/src/model/migrations/MigrationAlterer.cjs.map +1 -1
- package/dist/production/src/model/migrations/MigrationAlterer.js +10 -0
- package/dist/production/src/model/migrations/MigrationAlterer.js.map +1 -1
- package/dist/production/src/model/migrations/ProjectMigrator.cjs +29 -10
- package/dist/production/src/model/migrations/ProjectMigrator.cjs.map +1 -1
- package/dist/production/src/model/migrations/ProjectMigrator.js +30 -11
- package/dist/production/src/model/migrations/ProjectMigrator.js.map +1 -1
- package/dist/production/src/model/migrations/SchemaProvider.cjs +58 -0
- package/dist/production/src/model/migrations/SchemaProvider.cjs.map +1 -0
- package/dist/production/src/model/migrations/SchemaProvider.js +58 -0
- package/dist/production/src/model/migrations/SchemaProvider.js.map +1 -0
- package/dist/production/src/model/queries/events/EventsQuery.cjs +10 -14
- package/dist/production/src/model/queries/events/EventsQuery.cjs.map +1 -1
- package/dist/production/src/model/queries/events/EventsQuery.js +10 -14
- package/dist/production/src/model/queries/events/EventsQuery.js.map +1 -1
- package/dist/production/src/model/queries/schema/SchemaQuery.cjs +34 -0
- package/dist/production/src/model/queries/schema/SchemaQuery.cjs.map +1 -0
- package/dist/production/src/model/queries/schema/SchemaQuery.js +34 -0
- package/dist/production/src/model/queries/schema/SchemaQuery.js.map +1 -0
- package/dist/production/src/resolvers/ResolverFactory.cjs +6 -2
- package/dist/production/src/resolvers/ResolverFactory.cjs.map +1 -1
- package/dist/production/src/resolvers/ResolverFactory.js +7 -3
- package/dist/production/src/resolvers/ResolverFactory.js.map +1 -1
- package/dist/production/src/resolvers/SystemResolverContext.cjs +5 -5
- package/dist/production/src/resolvers/SystemResolverContext.cjs.map +1 -1
- package/dist/production/src/resolvers/SystemResolverContext.js +5 -5
- package/dist/production/src/resolvers/SystemResolverContext.js.map +1 -1
- package/dist/production/src/resolvers/mutation/MigrateMutationResolver.cjs +0 -1
- package/dist/production/src/resolvers/mutation/MigrateMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/MigrateMutationResolver.js +0 -1
- package/dist/production/src/resolvers/mutation/MigrateMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/MigrationAlterMutationResolver.cjs +0 -1
- package/dist/production/src/resolvers/mutation/MigrationAlterMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/MigrationAlterMutationResolver.js +0 -1
- package/dist/production/src/resolvers/mutation/MigrationAlterMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/TruncateMutationResolver.cjs +1 -1
- package/dist/production/src/resolvers/mutation/TruncateMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/TruncateMutationResolver.js +1 -1
- package/dist/production/src/resolvers/mutation/TruncateMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/query/EventsQueryResolver.cjs +0 -1
- package/dist/production/src/resolvers/query/EventsQueryResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/query/EventsQueryResolver.js +0 -1
- package/dist/production/src/resolvers/query/EventsQueryResolver.js.map +1 -1
- package/dist/production/src/resolvers/query/ExecutedMigrationsQueryResolver.cjs +0 -1
- package/dist/production/src/resolvers/query/ExecutedMigrationsQueryResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/query/ExecutedMigrationsQueryResolver.js +0 -1
- package/dist/production/src/resolvers/query/ExecutedMigrationsQueryResolver.js.map +1 -1
- package/dist/production/src/resolvers/query/SchemaQueryResolver.cjs +23 -0
- package/dist/production/src/resolvers/query/SchemaQueryResolver.cjs.map +1 -0
- package/dist/production/src/resolvers/query/SchemaQueryResolver.js +23 -0
- package/dist/production/src/resolvers/query/SchemaQueryResolver.js.map +1 -0
- package/dist/production/src/resolvers/query/StagesQueryResolver.cjs +0 -1
- package/dist/production/src/resolvers/query/StagesQueryResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/query/StagesQueryResolver.js +0 -1
- package/dist/production/src/resolvers/query/StagesQueryResolver.js.map +1 -1
- package/dist/production/src/resolvers/types/OldValuesHelpers.cjs +0 -1
- package/dist/production/src/resolvers/types/OldValuesHelpers.cjs.map +1 -1
- package/dist/production/src/resolvers/types/OldValuesHelpers.js +0 -1
- package/dist/production/src/resolvers/types/OldValuesHelpers.js.map +1 -1
- package/dist/production/src/schema/system.graphql.cjs +3 -1
- package/dist/production/src/schema/system.graphql.cjs.map +1 -1
- package/dist/production/src/schema/system.graphql.js +3 -1
- package/dist/production/src/schema/system.graphql.js.map +1 -1
- package/dist/production/src/schema/types.cjs.map +1 -1
- package/dist/production/src/schema/types.js.map +1 -1
- package/dist/tests/cases/unit/eventsQuery.test.d.ts +2 -0
- package/dist/tests/cases/unit/eventsQuery.test.d.ts.map +1 -0
- package/dist/tests/src/uuid.d.ts +3 -0
- package/dist/tests/src/uuid.d.ts.map +1 -0
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/dist/types/SystemContainer.d.ts +7 -3
- package/dist/types/SystemContainer.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/migrations/2024-06-28-153000-schema.d.ts +3 -0
- package/dist/types/migrations/2024-06-28-153000-schema.d.ts.map +1 -0
- package/dist/types/migrations/2024-06-28-153001-schema-init.d.ts +4 -0
- package/dist/types/migrations/2024-06-28-153001-schema-init.d.ts.map +1 -0
- package/dist/types/migrations/2024-07-29-150000-event-data-index.d.ts +3 -0
- package/dist/types/migrations/2024-07-29-150000-event-data-index.d.ts.map +1 -0
- package/dist/types/migrations/runner.d.ts +3 -3
- package/dist/types/migrations/runner.d.ts.map +1 -1
- package/dist/types/migrations/snapshot.d.ts.map +1 -1
- package/dist/types/migrations/types.d.ts +2 -2
- package/dist/types/migrations/types.d.ts.map +1 -1
- package/dist/types/model/SchemaGetter.d.ts +6 -0
- package/dist/types/model/SchemaGetter.d.ts.map +1 -0
- package/dist/types/model/authorization/AuthorizationActions.d.ts +5 -0
- package/dist/types/model/authorization/AuthorizationActions.d.ts.map +1 -1
- package/dist/types/model/authorization/PermissionsFactory.d.ts.map +1 -1
- package/dist/types/model/authorization/StagePermissionsFactory.d.ts +4 -4
- package/dist/types/model/authorization/StagePermissionsFactory.d.ts.map +1 -1
- package/dist/types/model/authorization/StageScope.d.ts.map +1 -1
- package/dist/types/model/commands/schema/SaveSchemaCommand.d.ts +8 -0
- package/dist/types/model/commands/schema/SaveSchemaCommand.d.ts.map +1 -0
- package/dist/types/model/dependencies/content/ContentQueryExecutor.d.ts +3 -2
- package/dist/types/model/dependencies/content/ContentQueryExecutor.d.ts.map +1 -1
- package/dist/types/model/migrations/MigrationAlterer.d.ts +4 -0
- package/dist/types/model/migrations/MigrationAlterer.d.ts.map +1 -1
- package/dist/types/model/migrations/ProjectMigrator.d.ts +3 -3
- package/dist/types/model/migrations/ProjectMigrator.d.ts.map +1 -1
- package/dist/types/model/migrations/SchemaProvider.d.ts +28 -0
- package/dist/types/model/migrations/SchemaProvider.d.ts.map +1 -0
- package/dist/types/model/migrations/index.d.ts +1 -1
- package/dist/types/model/migrations/index.d.ts.map +1 -1
- package/dist/types/model/queries/events/EventsQuery.d.ts.map +1 -1
- package/dist/types/model/queries/index.d.ts +1 -0
- package/dist/types/model/queries/index.d.ts.map +1 -1
- package/dist/types/model/queries/schema/SchemaQuery.d.ts +8 -0
- package/dist/types/model/queries/schema/SchemaQuery.d.ts.map +1 -0
- package/dist/types/model/queries/schema/index.d.ts +2 -0
- package/dist/types/model/queries/schema/index.d.ts.map +1 -0
- package/dist/types/resolvers/ResolverFactory.d.ts +3 -1
- package/dist/types/resolvers/ResolverFactory.d.ts.map +1 -1
- package/dist/types/resolvers/SystemResolverContext.d.ts +4 -4
- package/dist/types/resolvers/SystemResolverContext.d.ts.map +1 -1
- package/dist/types/resolvers/query/SchemaQueryResolver.d.ts +7 -0
- package/dist/types/resolvers/query/SchemaQueryResolver.d.ts.map +1 -0
- package/dist/types/schema/system.graphql.d.ts.map +1 -1
- package/dist/types/schema/types.d.ts +15 -3
- package/dist/types/schema/types.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/graphql.codegen.yml +2 -0
- package/package.json +12 -12
- package/src/SystemContainer.ts +14 -11
- package/src/bin/runMigrations.ts +4 -4
- package/src/index.ts +3 -2
- package/src/migrations/2020-05-06-150000-composed-primary.ts +1 -1
- package/src/migrations/2020-06-01-103000-event-trigger-perf.ts +1 -1
- package/src/migrations/2021-05-07-155800-event-log-rework.ts +1 -1
- package/src/migrations/2021-05-19-1232000-event-log-fix-constraint.ts +1 -1
- package/src/migrations/2022-10-03-110000-table-on-delete.ts +1 -1
- package/src/migrations/2023-09-11-174000-fix-on-delete.ts +1 -1
- package/src/migrations/2023-10-19-173000-fix-unique.ts +1 -1
- package/src/migrations/2024-06-28-153000-schema.ts +20 -0
- package/src/migrations/2024-06-28-153001-schema-init.ts +12 -0
- package/src/migrations/2024-07-29-150000-event-data-index.ts +11 -0
- package/src/migrations/runner.ts +10 -4
- package/src/migrations/snapshot.ts +17 -1
- package/src/migrations/types.ts +2 -2
- package/src/model/SchemaGetter.ts +3 -0
- package/src/model/authorization/AuthorizationActions.ts +1 -0
- package/src/model/authorization/PermissionsFactory.ts +1 -0
- package/src/model/authorization/StagePermissionsFactory.ts +5 -5
- package/src/model/authorization/StageScope.ts +2 -2
- package/src/model/commands/schema/SaveSchemaCommand.ts +31 -0
- package/src/model/dependencies/content/ContentQueryExecutor.ts +3 -2
- package/src/model/migrations/MigrationAlterer.ts +14 -0
- package/src/model/migrations/ProjectMigrator.ts +34 -12
- package/src/model/migrations/SchemaProvider.ts +77 -0
- package/src/model/migrations/index.ts +1 -1
- package/src/model/queries/events/EventsQuery.ts +15 -17
- package/src/model/queries/index.ts +1 -0
- package/src/model/queries/schema/SchemaQuery.ts +48 -0
- package/src/model/queries/schema/index.ts +1 -0
- package/src/resolvers/ResolverFactory.ts +9 -1
- package/src/resolvers/SystemResolverContext.ts +8 -13
- package/src/resolvers/mutation/TruncateMutationResolver.ts +1 -1
- package/src/resolvers/query/SchemaQueryResolver.ts +19 -0
- package/src/schema/system.graphql.ts +3 -1
- package/src/schema/types.ts +12 -2
- package/tests/cases/migrations/2020-05-06-150000-composed-primary.test.ts +9 -1
- package/tests/cases/migrations/2020-06-01-103000-event-trigger-perf.test.ts +9 -1
- package/tests/cases/migrations/2022-10-03-110000-table-on-delete.test.ts +17 -6
- package/tests/cases/migrations/2023-09-11-174000-fix-on-delete.test.ts +32 -12
- package/tests/cases/migrations/2023-10-19-173000-fix-unique.test.ts +9 -1
- package/tests/cases/unit/eventsQuery.test.ts +39 -0
- package/tests/src/uuid.ts +4 -0
- package/dist/development/src/model/migrations/SchemaVersionBuilder.cjs +0 -37
- package/dist/development/src/model/migrations/SchemaVersionBuilder.cjs.map +0 -1
- package/dist/development/src/model/migrations/SchemaVersionBuilder.js +0 -37
- package/dist/development/src/model/migrations/SchemaVersionBuilder.js.map +0 -1
- package/dist/production/src/model/migrations/SchemaVersionBuilder.cjs +0 -37
- package/dist/production/src/model/migrations/SchemaVersionBuilder.cjs.map +0 -1
- package/dist/production/src/model/migrations/SchemaVersionBuilder.js +0 -37
- package/dist/production/src/model/migrations/SchemaVersionBuilder.js.map +0 -1
- package/dist/types/model/migrations/SchemaVersionBuilder.d.ts +0 -37
- package/dist/types/model/migrations/SchemaVersionBuilder.d.ts.map +0 -1
- package/src/model/migrations/SchemaVersionBuilder.ts +0 -43
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sources":["../../../../../packages/engine-system-api/src/schema/types.ts"],"sourcesContent":["import { GraphQLResolveInfo, GraphQLScalarType, GraphQLScalarTypeConfig } from 'graphql'\nexport type Maybe<T> = T | null\nexport type InputMaybe<T> = Maybe<T>\nexport type Exact<T extends { [key: string]: unknown }> = { [K in keyof T]: T[K] }\nexport type MakeOptional<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]?: Maybe<T[SubKey]> }\nexport type MakeMaybe<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]: Maybe<T[SubKey]> }\nexport type MakeEmpty<T extends { [key: string]: unknown }, K extends keyof T> = { [_ in K]?: never }\nexport type Incremental<T> = T | { [P in keyof T]?: P extends ' $fragmentName' | '__typename' ? T[P] : never }\nexport type RequireFields<T, K extends keyof T> = Omit<T, K> & { [P in K]-?: NonNullable<T[P]> }\n/** All built-in and custom scalars, mapped to their actual values */\nexport type Scalars = {\n\tID: { input: string; output: string }\n\tString: { input: string; output: string }\n\tBoolean: { input: boolean; output: boolean }\n\tInt: { input: number; output: number }\n\tFloat: { input: number; output: number }\n\tDateTime: { input: Date; output: Date }\n\tJson: { input: unknown; output: unknown }\n\tPrimaryKey: { input: any; output: any }\n}\n\nexport type ContentMigration = {\n\treadonly checkMutationResult?: InputMaybe<Scalars['Boolean']['input']>\n\treadonly query: Scalars['String']['input']\n\treadonly stage?: InputMaybe<Scalars['String']['input']>\n\treadonly variables?: InputMaybe<Scalars['Json']['input']>\n}\n\nexport type CreateEvent = Event & {\n\treadonly __typename?: 'CreateEvent'\n\treadonly appliedAt: Scalars['DateTime']['output']\n\treadonly createdAt: Scalars['DateTime']['output']\n\treadonly description: Scalars['String']['output']\n\treadonly id: Scalars['String']['output']\n\treadonly identityDescription: Scalars['String']['output']\n\treadonly identityId: Scalars['String']['output']\n\treadonly newValues: Scalars['Json']['output']\n\treadonly primaryKey: ReadonlyArray<Scalars['PrimaryKey']['output']>\n\treadonly tableName: Scalars['String']['output']\n\treadonly transactionId: Scalars['String']['output']\n\treadonly type: EventType\n}\n\nexport type DeleteEvent = Event & {\n\treadonly __typename?: 'DeleteEvent'\n\treadonly appliedAt: Scalars['DateTime']['output']\n\treadonly createdAt: Scalars['DateTime']['output']\n\treadonly description: Scalars['String']['output']\n\treadonly id: Scalars['String']['output']\n\treadonly identityDescription: Scalars['String']['output']\n\treadonly identityId: Scalars['String']['output']\n\treadonly oldValues: Scalars['Json']['output']\n\treadonly primaryKey: ReadonlyArray<Scalars['PrimaryKey']['output']>\n\treadonly tableName: Scalars['String']['output']\n\treadonly transactionId: Scalars['String']['output']\n\treadonly type: EventType\n}\n\nexport type Event = {\n\treadonly appliedAt: Scalars['DateTime']['output']\n\treadonly createdAt: Scalars['DateTime']['output']\n\treadonly description: Scalars['String']['output']\n\treadonly id: Scalars['String']['output']\n\treadonly identityDescription: Scalars['String']['output']\n\treadonly identityId: Scalars['String']['output']\n\treadonly primaryKey: ReadonlyArray<Scalars['PrimaryKey']['output']>\n\treadonly tableName: Scalars['String']['output']\n\treadonly transactionId: Scalars['String']['output']\n\treadonly type: EventType\n}\n\nexport type EventFilterRow = {\n\treadonly primaryKey: ReadonlyArray<Scalars['PrimaryKey']['input']>\n\treadonly tableName: Scalars['String']['input']\n}\n\nexport enum EventType {\n\tCreate = 'CREATE',\n\tDelete = 'DELETE',\n\tUpdate = 'UPDATE'\n}\n\nexport type EventsArgs = {\n\treadonly filter?: InputMaybe<EventsFilter>\n\t/** Max 10000 */\n\treadonly limit?: InputMaybe<Scalars['Int']['input']>\n\treadonly offset?: InputMaybe<Scalars['Int']['input']>\n\treadonly order?: InputMaybe<EventsOrder>\n\treadonly stage?: InputMaybe<Scalars['String']['input']>\n}\n\nexport type EventsFilter = {\n\treadonly appliedAt?: InputMaybe<EventsFilterDate>\n\treadonly createdAt?: InputMaybe<EventsFilterDate>\n\treadonly identities?: InputMaybe<ReadonlyArray<Scalars['String']['input']>>\n\treadonly rows?: InputMaybe<ReadonlyArray<EventFilterRow>>\n\treadonly tables?: InputMaybe<ReadonlyArray<Scalars['String']['input']>>\n\treadonly transactions?: InputMaybe<ReadonlyArray<Scalars['String']['input']>>\n\treadonly types?: InputMaybe<ReadonlyArray<EventType>>\n}\n\nexport type EventsFilterDate = {\n\treadonly from?: InputMaybe<Scalars['DateTime']['input']>\n\treadonly to?: InputMaybe<Scalars['DateTime']['input']>\n}\n\nexport enum EventsOrder {\n\tAppliedAtAsc = 'APPLIED_AT_ASC',\n\tAppliedAtDesc = 'APPLIED_AT_DESC',\n\tCreatedAtAsc = 'CREATED_AT_ASC',\n\tCreatedAtDesc = 'CREATED_AT_DESC'\n}\n\nexport type ExecutedMigration = {\n\treadonly __typename?: 'ExecutedMigration'\n\treadonly checksum?: Maybe<Scalars['String']['output']>\n\treadonly executedAt: Scalars['DateTime']['output']\n\treadonly formatVersion?: Maybe<Scalars['Int']['output']>\n\treadonly modifications?: Maybe<ReadonlyArray<Scalars['Json']['output']>>\n\treadonly name: Scalars['String']['output']\n\treadonly version: Scalars['String']['output']\n}\n\nexport type MigrateError = {\n\treadonly __typename?: 'MigrateError'\n\treadonly code: MigrateErrorCode\n\treadonly developerMessage: Scalars['String']['output']\n\treadonly migration: Scalars['String']['output']\n}\n\nexport enum MigrateErrorCode {\n\tAlreadyExecuted = 'ALREADY_EXECUTED',\n\tContentMigrationFailed = 'CONTENT_MIGRATION_FAILED',\n\tContentMigrationNotSuccessful = 'CONTENT_MIGRATION_NOT_SUCCESSFUL',\n\tInvalidFormat = 'INVALID_FORMAT',\n\tInvalidSchema = 'INVALID_SCHEMA',\n\tMigrationFailed = 'MIGRATION_FAILED',\n\tMustFollowLatest = 'MUST_FOLLOW_LATEST'\n}\n\nexport type MigrateResponse = {\n\treadonly __typename?: 'MigrateResponse'\n\treadonly error?: Maybe<MigrateError>\n\t/** @deprecated Field no longer supported */\n\treadonly errors: ReadonlyArray<MigrateError>\n\treadonly ok: Scalars['Boolean']['output']\n\treadonly result?: Maybe<MigrateResult>\n}\n\nexport type MigrateResult = {\n\treadonly __typename?: 'MigrateResult'\n\treadonly message: Scalars['String']['output']\n}\n\nexport type Migration = {\n\treadonly contentMigration?: InputMaybe<ReadonlyArray<ContentMigration>>\n\t/** @deprecated Use schemaMigration with SCHEMA type */\n\treadonly formatVersion?: InputMaybe<Scalars['Int']['input']>\n\t/** @deprecated Use schemaMigration with SCHEMA type */\n\treadonly modifications?: InputMaybe<ReadonlyArray<Scalars['Json']['input']>>\n\treadonly name: Scalars['String']['input']\n\treadonly schemaMigration?: InputMaybe<SchemaMigration>\n\t/** @deprecated Use schemaMigration with SCHEMA type */\n\treadonly skippedErrors?: InputMaybe<ReadonlyArray<MigrationSkippedError>>\n\treadonly type?: InputMaybe<MigrationType>\n\treadonly version: Scalars['String']['input']\n}\n\nexport type MigrationDeleteError = {\n\treadonly __typename?: 'MigrationDeleteError'\n\treadonly code: MigrationDeleteErrorCode\n\treadonly developerMessage: Scalars['String']['output']\n}\n\nexport enum MigrationDeleteErrorCode {\n\tInvalidFormat = 'INVALID_FORMAT',\n\tNotFound = 'NOT_FOUND'\n}\n\nexport type MigrationDeleteResponse = {\n\treadonly __typename?: 'MigrationDeleteResponse'\n\treadonly error?: Maybe<MigrationDeleteError>\n\treadonly ok: Scalars['Boolean']['output']\n}\n\nexport type MigrationModification = {\n\treadonly formatVersion?: InputMaybe<Scalars['Int']['input']>\n\treadonly modifications?: InputMaybe<ReadonlyArray<Scalars['Json']['input']>>\n\treadonly name?: InputMaybe<Scalars['String']['input']>\n\treadonly version?: InputMaybe<Scalars['String']['input']>\n}\n\nexport type MigrationModifyError = {\n\treadonly __typename?: 'MigrationModifyError'\n\treadonly code: MigrationModifyErrorCode\n\treadonly developerMessage: Scalars['String']['output']\n}\n\nexport enum MigrationModifyErrorCode {\n\tNotFound = 'NOT_FOUND'\n}\n\nexport type MigrationModifyResponse = {\n\treadonly __typename?: 'MigrationModifyResponse'\n\treadonly error?: Maybe<MigrationModifyError>\n\treadonly ok: Scalars['Boolean']['output']\n}\n\nexport type MigrationSkippedError = {\n\treadonly code: Scalars['String']['input']\n\treadonly path?: InputMaybe<Scalars['String']['input']>\n}\n\nexport enum MigrationType {\n\tContent = 'CONTENT',\n\tSchema = 'SCHEMA'\n}\n\nexport type Mutation = {\n\treadonly __typename?: 'Mutation'\n\treadonly forceMigrate: MigrateResponse\n\treadonly migrate: MigrateResponse\n\treadonly migrationDelete: MigrationDeleteResponse\n\treadonly migrationModify: MigrationModifyResponse\n\treadonly truncate: TruncateResponse\n}\n\n\nexport type MutationForceMigrateArgs = {\n\tmigrations: ReadonlyArray<Migration>\n}\n\n\nexport type MutationMigrateArgs = {\n\tmigrations: ReadonlyArray<Migration>\n}\n\n\nexport type MutationMigrationDeleteArgs = {\n\tmigration: Scalars['String']['input']\n}\n\n\nexport type MutationMigrationModifyArgs = {\n\tmigration: Scalars['String']['input']\n\tmodification: MigrationModification\n}\n\nexport type Query = {\n\treadonly __typename?: 'Query'\n\treadonly events: ReadonlyArray<Event>\n\treadonly executedMigrations: ReadonlyArray<ExecutedMigration>\n\treadonly stages: ReadonlyArray<Stage>\n}\n\n\nexport type QueryEventsArgs = {\n\targs?: InputMaybe<EventsArgs>\n}\n\n\nexport type QueryExecutedMigrationsArgs = {\n\tversion?: InputMaybe<Scalars['String']['input']>\n}\n\nexport type SchemaMigration = {\n\treadonly formatVersion: Scalars['Int']['input']\n\treadonly modifications: ReadonlyArray<Scalars['Json']['input']>\n\treadonly skippedErrors?: InputMaybe<ReadonlyArray<MigrationSkippedError>>\n}\n\nexport type Stage = {\n\treadonly __typename?: 'Stage'\n\treadonly id: Scalars['String']['output']\n\treadonly name: Scalars['String']['output']\n\treadonly slug: Scalars['String']['output']\n}\n\nexport type TruncateResponse = {\n\treadonly __typename?: 'TruncateResponse'\n\treadonly ok: Scalars['Boolean']['output']\n}\n\nexport type UpdateEvent = Event & {\n\treadonly __typename?: 'UpdateEvent'\n\treadonly appliedAt: Scalars['DateTime']['output']\n\treadonly createdAt: Scalars['DateTime']['output']\n\treadonly description: Scalars['String']['output']\n\treadonly diffValues: Scalars['Json']['output']\n\treadonly id: Scalars['String']['output']\n\treadonly identityDescription: Scalars['String']['output']\n\treadonly identityId: Scalars['String']['output']\n\treadonly oldValues: Scalars['Json']['output']\n\treadonly primaryKey: ReadonlyArray<Scalars['PrimaryKey']['output']>\n\treadonly tableName: Scalars['String']['output']\n\treadonly transactionId: Scalars['String']['output']\n\treadonly type: EventType\n}\n\n\n\nexport type ResolverTypeWrapper<T> = Promise<T> | T\n\n\nexport type ResolverWithResolve<TResult, TParent, TContext, TArgs> = {\n\tresolve: ResolverFn<TResult, TParent, TContext, TArgs>\n}\nexport type Resolver<TResult, TParent = {}, TContext = {}, TArgs = {}> = ResolverFn<TResult, TParent, TContext, TArgs> | ResolverWithResolve<TResult, TParent, TContext, TArgs>\n\nexport type ResolverFn<TResult, TParent, TContext, TArgs> = (\n\tparent: TParent,\n\targs: TArgs,\n\tcontext: TContext,\n\tinfo: GraphQLResolveInfo\n) => Promise<TResult> | TResult\n\nexport type SubscriptionSubscribeFn<TResult, TParent, TContext, TArgs> = (\n\tparent: TParent,\n\targs: TArgs,\n\tcontext: TContext,\n\tinfo: GraphQLResolveInfo\n) => AsyncIterable<TResult> | Promise<AsyncIterable<TResult>>\n\nexport type SubscriptionResolveFn<TResult, TParent, TContext, TArgs> = (\n\tparent: TParent,\n\targs: TArgs,\n\tcontext: TContext,\n\tinfo: GraphQLResolveInfo\n) => TResult | Promise<TResult>\n\nexport interface SubscriptionSubscriberObject<TResult, TKey extends string, TParent, TContext, TArgs> {\n\tsubscribe: SubscriptionSubscribeFn<{ [key in TKey]: TResult }, TParent, TContext, TArgs>\n\tresolve?: SubscriptionResolveFn<TResult, { [key in TKey]: TResult }, TContext, TArgs>\n}\n\nexport interface SubscriptionResolverObject<TResult, TParent, TContext, TArgs> {\n\tsubscribe: SubscriptionSubscribeFn<any, TParent, TContext, TArgs>\n\tresolve: SubscriptionResolveFn<TResult, any, TContext, TArgs>\n}\n\nexport type SubscriptionObject<TResult, TKey extends string, TParent, TContext, TArgs> =\n | SubscriptionSubscriberObject<TResult, TKey, TParent, TContext, TArgs>\n | SubscriptionResolverObject<TResult, TParent, TContext, TArgs>\n\nexport type SubscriptionResolver<TResult, TKey extends string, TParent = {}, TContext = {}, TArgs = {}> =\n | ((...args: any[]) => SubscriptionObject<TResult, TKey, TParent, TContext, TArgs>)\n | SubscriptionObject<TResult, TKey, TParent, TContext, TArgs>\n\nexport type TypeResolveFn<TTypes, TParent = {}, TContext = {}> = (\n\tparent: TParent,\n\tcontext: TContext,\n\tinfo: GraphQLResolveInfo\n) => Maybe<TTypes> | Promise<Maybe<TTypes>>\n\nexport type IsTypeOfResolverFn<T = {}, TContext = {}> = (obj: T, context: TContext, info: GraphQLResolveInfo) => boolean | Promise<boolean>\n\nexport type NextResolverFn<T> = () => Promise<T>\n\nexport type DirectiveResolverFn<TResult = {}, TParent = {}, TContext = {}, TArgs = {}> = (\n\tnext: NextResolverFn<TResult>,\n\tparent: TParent,\n\targs: TArgs,\n\tcontext: TContext,\n\tinfo: GraphQLResolveInfo\n) => TResult | Promise<TResult>\n\n\n/** Mapping of interface types */\nexport type ResolversInterfaceTypes<RefType extends Record<string, unknown>> = {\n\tEvent: (CreateEvent) | (DeleteEvent) | (UpdateEvent)\n}\n\n/** Mapping between all available schema types and the resolvers types */\nexport type ResolversTypes = {\n\tBoolean: ResolverTypeWrapper<Scalars['Boolean']['output']>\n\tContentMigration: ContentMigration\n\tCreateEvent: ResolverTypeWrapper<CreateEvent>\n\tDateTime: ResolverTypeWrapper<Scalars['DateTime']['output']>\n\tDeleteEvent: ResolverTypeWrapper<DeleteEvent>\n\tEvent: ResolverTypeWrapper<ResolversInterfaceTypes<ResolversTypes>['Event']>\n\tEventFilterRow: EventFilterRow\n\tEventType: EventType\n\tEventsArgs: EventsArgs\n\tEventsFilter: EventsFilter\n\tEventsFilterDate: EventsFilterDate\n\tEventsOrder: EventsOrder\n\tExecutedMigration: ResolverTypeWrapper<ExecutedMigration>\n\tInt: ResolverTypeWrapper<Scalars['Int']['output']>\n\tJson: ResolverTypeWrapper<Scalars['Json']['output']>\n\tMigrateError: ResolverTypeWrapper<MigrateError>\n\tMigrateErrorCode: MigrateErrorCode\n\tMigrateResponse: ResolverTypeWrapper<MigrateResponse>\n\tMigrateResult: ResolverTypeWrapper<MigrateResult>\n\tMigration: Migration\n\tMigrationDeleteError: ResolverTypeWrapper<MigrationDeleteError>\n\tMigrationDeleteErrorCode: MigrationDeleteErrorCode\n\tMigrationDeleteResponse: ResolverTypeWrapper<MigrationDeleteResponse>\n\tMigrationModification: MigrationModification\n\tMigrationModifyError: ResolverTypeWrapper<MigrationModifyError>\n\tMigrationModifyErrorCode: MigrationModifyErrorCode\n\tMigrationModifyResponse: ResolverTypeWrapper<MigrationModifyResponse>\n\tMigrationSkippedError: MigrationSkippedError\n\tMigrationType: MigrationType\n\tMutation: ResolverTypeWrapper<{}>\n\tPrimaryKey: ResolverTypeWrapper<Scalars['PrimaryKey']['output']>\n\tQuery: ResolverTypeWrapper<{}>\n\tSchemaMigration: SchemaMigration\n\tStage: ResolverTypeWrapper<Stage>\n\tString: ResolverTypeWrapper<Scalars['String']['output']>\n\tTruncateResponse: ResolverTypeWrapper<TruncateResponse>\n\tUpdateEvent: ResolverTypeWrapper<UpdateEvent>\n}\n\n/** Mapping between all available schema types and the resolvers parents */\nexport type ResolversParentTypes = {\n\tBoolean: Scalars['Boolean']['output']\n\tContentMigration: ContentMigration\n\tCreateEvent: CreateEvent\n\tDateTime: Scalars['DateTime']['output']\n\tDeleteEvent: DeleteEvent\n\tEvent: ResolversInterfaceTypes<ResolversParentTypes>['Event']\n\tEventFilterRow: EventFilterRow\n\tEventsArgs: EventsArgs\n\tEventsFilter: EventsFilter\n\tEventsFilterDate: EventsFilterDate\n\tExecutedMigration: ExecutedMigration\n\tInt: Scalars['Int']['output']\n\tJson: Scalars['Json']['output']\n\tMigrateError: MigrateError\n\tMigrateResponse: MigrateResponse\n\tMigrateResult: MigrateResult\n\tMigration: Migration\n\tMigrationDeleteError: MigrationDeleteError\n\tMigrationDeleteResponse: MigrationDeleteResponse\n\tMigrationModification: MigrationModification\n\tMigrationModifyError: MigrationModifyError\n\tMigrationModifyResponse: MigrationModifyResponse\n\tMigrationSkippedError: MigrationSkippedError\n\tMutation: {}\n\tPrimaryKey: Scalars['PrimaryKey']['output']\n\tQuery: {}\n\tSchemaMigration: SchemaMigration\n\tStage: Stage\n\tString: Scalars['String']['output']\n\tTruncateResponse: TruncateResponse\n\tUpdateEvent: UpdateEvent\n}\n\nexport type CreateEventResolvers<ContextType = any, ParentType extends ResolversParentTypes['CreateEvent'] = ResolversParentTypes['CreateEvent']> = {\n\tappliedAt?: Resolver<ResolversTypes['DateTime'], ParentType, ContextType>\n\tcreatedAt?: Resolver<ResolversTypes['DateTime'], ParentType, ContextType>\n\tdescription?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\tid?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\tidentityDescription?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\tidentityId?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\tnewValues?: Resolver<ResolversTypes['Json'], ParentType, ContextType>\n\tprimaryKey?: Resolver<ReadonlyArray<ResolversTypes['PrimaryKey']>, ParentType, ContextType>\n\ttableName?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\ttransactionId?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\ttype?: Resolver<ResolversTypes['EventType'], ParentType, ContextType>\n\t__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>\n}\n\nexport interface DateTimeScalarConfig extends GraphQLScalarTypeConfig<ResolversTypes['DateTime'], any> {\n\tname: 'DateTime'\n}\n\nexport type DeleteEventResolvers<ContextType = any, ParentType extends ResolversParentTypes['DeleteEvent'] = ResolversParentTypes['DeleteEvent']> = {\n\tappliedAt?: Resolver<ResolversTypes['DateTime'], ParentType, ContextType>\n\tcreatedAt?: Resolver<ResolversTypes['DateTime'], ParentType, ContextType>\n\tdescription?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\tid?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\tidentityDescription?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\tidentityId?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\toldValues?: Resolver<ResolversTypes['Json'], ParentType, ContextType>\n\tprimaryKey?: Resolver<ReadonlyArray<ResolversTypes['PrimaryKey']>, ParentType, ContextType>\n\ttableName?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\ttransactionId?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\ttype?: Resolver<ResolversTypes['EventType'], ParentType, ContextType>\n\t__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>\n}\n\nexport type EventResolvers<ContextType = any, ParentType extends ResolversParentTypes['Event'] = ResolversParentTypes['Event']> = {\n\t__resolveType: TypeResolveFn<'CreateEvent' | 'DeleteEvent' | 'UpdateEvent', ParentType, ContextType>\n\tappliedAt?: Resolver<ResolversTypes['DateTime'], ParentType, ContextType>\n\tcreatedAt?: Resolver<ResolversTypes['DateTime'], ParentType, ContextType>\n\tdescription?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\tid?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\tidentityDescription?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\tidentityId?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\tprimaryKey?: Resolver<ReadonlyArray<ResolversTypes['PrimaryKey']>, ParentType, ContextType>\n\ttableName?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\ttransactionId?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\ttype?: Resolver<ResolversTypes['EventType'], ParentType, ContextType>\n}\n\nexport type ExecutedMigrationResolvers<ContextType = any, ParentType extends ResolversParentTypes['ExecutedMigration'] = ResolversParentTypes['ExecutedMigration']> = {\n\tchecksum?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>\n\texecutedAt?: Resolver<ResolversTypes['DateTime'], ParentType, ContextType>\n\tformatVersion?: Resolver<Maybe<ResolversTypes['Int']>, ParentType, ContextType>\n\tmodifications?: Resolver<Maybe<ReadonlyArray<ResolversTypes['Json']>>, ParentType, ContextType>\n\tname?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\tversion?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\t__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>\n}\n\nexport interface JsonScalarConfig extends GraphQLScalarTypeConfig<ResolversTypes['Json'], any> {\n\tname: 'Json'\n}\n\nexport type MigrateErrorResolvers<ContextType = any, ParentType extends ResolversParentTypes['MigrateError'] = ResolversParentTypes['MigrateError']> = {\n\tcode?: Resolver<ResolversTypes['MigrateErrorCode'], ParentType, ContextType>\n\tdeveloperMessage?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\tmigration?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\t__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>\n}\n\nexport type MigrateResponseResolvers<ContextType = any, ParentType extends ResolversParentTypes['MigrateResponse'] = ResolversParentTypes['MigrateResponse']> = {\n\terror?: Resolver<Maybe<ResolversTypes['MigrateError']>, ParentType, ContextType>\n\terrors?: Resolver<ReadonlyArray<ResolversTypes['MigrateError']>, ParentType, ContextType>\n\tok?: Resolver<ResolversTypes['Boolean'], ParentType, ContextType>\n\tresult?: Resolver<Maybe<ResolversTypes['MigrateResult']>, ParentType, ContextType>\n\t__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>\n}\n\nexport type MigrateResultResolvers<ContextType = any, ParentType extends ResolversParentTypes['MigrateResult'] = ResolversParentTypes['MigrateResult']> = {\n\tmessage?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\t__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>\n}\n\nexport type MigrationDeleteErrorResolvers<ContextType = any, ParentType extends ResolversParentTypes['MigrationDeleteError'] = ResolversParentTypes['MigrationDeleteError']> = {\n\tcode?: Resolver<ResolversTypes['MigrationDeleteErrorCode'], ParentType, ContextType>\n\tdeveloperMessage?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\t__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>\n}\n\nexport type MigrationDeleteResponseResolvers<ContextType = any, ParentType extends ResolversParentTypes['MigrationDeleteResponse'] = ResolversParentTypes['MigrationDeleteResponse']> = {\n\terror?: Resolver<Maybe<ResolversTypes['MigrationDeleteError']>, ParentType, ContextType>\n\tok?: Resolver<ResolversTypes['Boolean'], ParentType, ContextType>\n\t__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>\n}\n\nexport type MigrationModifyErrorResolvers<ContextType = any, ParentType extends ResolversParentTypes['MigrationModifyError'] = ResolversParentTypes['MigrationModifyError']> = {\n\tcode?: Resolver<ResolversTypes['MigrationModifyErrorCode'], ParentType, ContextType>\n\tdeveloperMessage?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\t__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>\n}\n\nexport type MigrationModifyResponseResolvers<ContextType = any, ParentType extends ResolversParentTypes['MigrationModifyResponse'] = ResolversParentTypes['MigrationModifyResponse']> = {\n\terror?: Resolver<Maybe<ResolversTypes['MigrationModifyError']>, ParentType, ContextType>\n\tok?: Resolver<ResolversTypes['Boolean'], ParentType, ContextType>\n\t__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>\n}\n\nexport type MutationResolvers<ContextType = any, ParentType extends ResolversParentTypes['Mutation'] = ResolversParentTypes['Mutation']> = {\n\tforceMigrate?: Resolver<ResolversTypes['MigrateResponse'], ParentType, ContextType, RequireFields<MutationForceMigrateArgs, 'migrations'>>\n\tmigrate?: Resolver<ResolversTypes['MigrateResponse'], ParentType, ContextType, RequireFields<MutationMigrateArgs, 'migrations'>>\n\tmigrationDelete?: Resolver<ResolversTypes['MigrationDeleteResponse'], ParentType, ContextType, RequireFields<MutationMigrationDeleteArgs, 'migration'>>\n\tmigrationModify?: Resolver<ResolversTypes['MigrationModifyResponse'], ParentType, ContextType, RequireFields<MutationMigrationModifyArgs, 'migration' | 'modification'>>\n\ttruncate?: Resolver<ResolversTypes['TruncateResponse'], ParentType, ContextType>\n}\n\nexport interface PrimaryKeyScalarConfig extends GraphQLScalarTypeConfig<ResolversTypes['PrimaryKey'], any> {\n\tname: 'PrimaryKey'\n}\n\nexport type QueryResolvers<ContextType = any, ParentType extends ResolversParentTypes['Query'] = ResolversParentTypes['Query']> = {\n\tevents?: Resolver<ReadonlyArray<ResolversTypes['Event']>, ParentType, ContextType, Partial<QueryEventsArgs>>\n\texecutedMigrations?: Resolver<ReadonlyArray<ResolversTypes['ExecutedMigration']>, ParentType, ContextType, Partial<QueryExecutedMigrationsArgs>>\n\tstages?: Resolver<ReadonlyArray<ResolversTypes['Stage']>, ParentType, ContextType>\n}\n\nexport type StageResolvers<ContextType = any, ParentType extends ResolversParentTypes['Stage'] = ResolversParentTypes['Stage']> = {\n\tid?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\tname?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\tslug?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\t__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>\n}\n\nexport type TruncateResponseResolvers<ContextType = any, ParentType extends ResolversParentTypes['TruncateResponse'] = ResolversParentTypes['TruncateResponse']> = {\n\tok?: Resolver<ResolversTypes['Boolean'], ParentType, ContextType>\n\t__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>\n}\n\nexport type UpdateEventResolvers<ContextType = any, ParentType extends ResolversParentTypes['UpdateEvent'] = ResolversParentTypes['UpdateEvent']> = {\n\tappliedAt?: Resolver<ResolversTypes['DateTime'], ParentType, ContextType>\n\tcreatedAt?: Resolver<ResolversTypes['DateTime'], ParentType, ContextType>\n\tdescription?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\tdiffValues?: Resolver<ResolversTypes['Json'], ParentType, ContextType>\n\tid?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\tidentityDescription?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\tidentityId?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\toldValues?: Resolver<ResolversTypes['Json'], ParentType, ContextType>\n\tprimaryKey?: Resolver<ReadonlyArray<ResolversTypes['PrimaryKey']>, ParentType, ContextType>\n\ttableName?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\ttransactionId?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\ttype?: Resolver<ResolversTypes['EventType'], ParentType, ContextType>\n\t__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>\n}\n\nexport type Resolvers<ContextType = any> = {\n\tCreateEvent?: CreateEventResolvers<ContextType>\n\tDateTime?: GraphQLScalarType\n\tDeleteEvent?: DeleteEventResolvers<ContextType>\n\tEvent?: EventResolvers<ContextType>\n\tExecutedMigration?: ExecutedMigrationResolvers<ContextType>\n\tJson?: GraphQLScalarType\n\tMigrateError?: MigrateErrorResolvers<ContextType>\n\tMigrateResponse?: MigrateResponseResolvers<ContextType>\n\tMigrateResult?: MigrateResultResolvers<ContextType>\n\tMigrationDeleteError?: MigrationDeleteErrorResolvers<ContextType>\n\tMigrationDeleteResponse?: MigrationDeleteResponseResolvers<ContextType>\n\tMigrationModifyError?: MigrationModifyErrorResolvers<ContextType>\n\tMigrationModifyResponse?: MigrationModifyResponseResolvers<ContextType>\n\tMutation?: MutationResolvers<ContextType>\n\tPrimaryKey?: GraphQLScalarType\n\tQuery?: QueryResolvers<ContextType>\n\tStage?: StageResolvers<ContextType>\n\tTruncateResponse?: TruncateResponseResolvers<ContextType>\n\tUpdateEvent?: UpdateEventResolvers<ContextType>\n}\n\n"],"names":["EventType","EventsOrder","MigrateErrorCode","MigrationDeleteErrorCode","MigrationModifyErrorCode","MigrationType"],"mappings":"AA4EY,IAAA,8BAAAA,eAAL;AACNA,aAAA,QAAS,IAAA;AACTA,aAAA,QAAS,IAAA;AACTA,aAAA,QAAS,IAAA;AAHEA,SAAAA;AAAA,GAAA,aAAA,CAAA,CAAA;AA8BA,IAAA,gCAAAC,iBAAL;AACNA,eAAA,cAAe,IAAA;AACfA,eAAA,eAAgB,IAAA;AAChBA,eAAA,cAAe,IAAA;AACfA,eAAA,eAAgB,IAAA;AAJLA,SAAAA;AAAA,GAAA,eAAA,CAAA,CAAA;AAwBA,IAAA,qCAAAC,sBAAL;AACNA,oBAAA,iBAAkB,IAAA;AAClBA,oBAAA,wBAAyB,IAAA;AACzBA,oBAAA,+BAAgC,IAAA;AAChCA,oBAAA,eAAgB,IAAA;AAChBA,oBAAA,eAAgB,IAAA;AAChBA,oBAAA,iBAAkB,IAAA;AAClBA,oBAAA,kBAAmB,IAAA;AAPRA,SAAAA;AAAA,GAAA,oBAAA,CAAA,CAAA;AA4CA,IAAA,6CAAAC,8BAAL;AACNA,4BAAA,eAAgB,IAAA;AAChBA,4BAAA,UAAW,IAAA;AAFAA,SAAAA;AAAA,GAAA,4BAAA,CAAA,CAAA;AAwBA,IAAA,6CAAAC,8BAAL;AACNA,4BAAA,UAAW,IAAA;AADAA,SAAAA;AAAA,GAAA,4BAAA,CAAA,CAAA;AAeA,IAAA,kCAAAC,mBAAL;AACNA,iBAAA,SAAU,IAAA;AACVA,iBAAA,QAAS,IAAA;AAFEA,SAAAA;AAAA,GAAA,iBAAA,CAAA,CAAA;"}
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../../../../../packages/engine-system-api/src/schema/types.ts"],"sourcesContent":["import { GraphQLResolveInfo, GraphQLScalarType, GraphQLScalarTypeConfig } from 'graphql'\nexport type Maybe<T> = T | null\nexport type InputMaybe<T> = Maybe<T>\nexport type Exact<T extends { [key: string]: unknown }> = { [K in keyof T]: T[K] }\nexport type MakeOptional<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]?: Maybe<T[SubKey]> }\nexport type MakeMaybe<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]: Maybe<T[SubKey]> }\nexport type MakeEmpty<T extends { [key: string]: unknown }, K extends keyof T> = { [_ in K]?: never }\nexport type Incremental<T> = T | { [P in keyof T]?: P extends ' $fragmentName' | '__typename' ? T[P] : never }\nexport type RequireFields<T, K extends keyof T> = Omit<T, K> & { [P in K]-?: NonNullable<T[P]> }\n/** All built-in and custom scalars, mapped to their actual values */\nexport type Scalars = {\n\tID: { input: string; output: string }\n\tString: { input: string; output: string }\n\tBoolean: { input: boolean; output: boolean }\n\tInt: { input: number; output: number }\n\tFloat: { input: number; output: number }\n\tSchema: { input: any; output: any }\n\tDateTime: { input: Date; output: Date }\n\tJson: { input: unknown; output: unknown }\n\tPrimaryKey: { input: string | number; output: string | number }\n}\n\nexport type ContentMigration = {\n\treadonly checkMutationResult?: InputMaybe<Scalars['Boolean']['input']>\n\treadonly query: Scalars['String']['input']\n\treadonly stage?: InputMaybe<Scalars['String']['input']>\n\treadonly variables?: InputMaybe<Scalars['Json']['input']>\n}\n\nexport type CreateEvent = Event & {\n\treadonly __typename?: 'CreateEvent'\n\treadonly appliedAt: Scalars['DateTime']['output']\n\treadonly createdAt: Scalars['DateTime']['output']\n\treadonly description: Scalars['String']['output']\n\treadonly id: Scalars['String']['output']\n\treadonly identityDescription: Scalars['String']['output']\n\treadonly identityId: Scalars['String']['output']\n\treadonly newValues: Scalars['Json']['output']\n\treadonly primaryKey: ReadonlyArray<Scalars['PrimaryKey']['output']>\n\treadonly tableName: Scalars['String']['output']\n\treadonly transactionId: Scalars['String']['output']\n\treadonly type: EventType\n}\n\nexport type DeleteEvent = Event & {\n\treadonly __typename?: 'DeleteEvent'\n\treadonly appliedAt: Scalars['DateTime']['output']\n\treadonly createdAt: Scalars['DateTime']['output']\n\treadonly description: Scalars['String']['output']\n\treadonly id: Scalars['String']['output']\n\treadonly identityDescription: Scalars['String']['output']\n\treadonly identityId: Scalars['String']['output']\n\treadonly oldValues: Scalars['Json']['output']\n\treadonly primaryKey: ReadonlyArray<Scalars['PrimaryKey']['output']>\n\treadonly tableName: Scalars['String']['output']\n\treadonly transactionId: Scalars['String']['output']\n\treadonly type: EventType\n}\n\nexport type Event = {\n\treadonly appliedAt: Scalars['DateTime']['output']\n\treadonly createdAt: Scalars['DateTime']['output']\n\treadonly description: Scalars['String']['output']\n\treadonly id: Scalars['String']['output']\n\treadonly identityDescription: Scalars['String']['output']\n\treadonly identityId: Scalars['String']['output']\n\treadonly primaryKey: ReadonlyArray<Scalars['PrimaryKey']['output']>\n\treadonly tableName: Scalars['String']['output']\n\treadonly transactionId: Scalars['String']['output']\n\treadonly type: EventType\n}\n\nexport type EventFilterRow = {\n\treadonly primaryKey: ReadonlyArray<InputMaybe<Scalars['PrimaryKey']['input']>>\n\treadonly tableName: Scalars['String']['input']\n}\n\nexport enum EventType {\n\tCreate = 'CREATE',\n\tDelete = 'DELETE',\n\tUpdate = 'UPDATE'\n}\n\nexport type EventsArgs = {\n\treadonly filter?: InputMaybe<EventsFilter>\n\t/** Max 10000 */\n\treadonly limit?: InputMaybe<Scalars['Int']['input']>\n\treadonly offset?: InputMaybe<Scalars['Int']['input']>\n\treadonly order?: InputMaybe<EventsOrder>\n\treadonly stage?: InputMaybe<Scalars['String']['input']>\n}\n\nexport type EventsFilter = {\n\treadonly appliedAt?: InputMaybe<EventsFilterDate>\n\treadonly createdAt?: InputMaybe<EventsFilterDate>\n\treadonly identities?: InputMaybe<ReadonlyArray<Scalars['String']['input']>>\n\treadonly rows?: InputMaybe<ReadonlyArray<EventFilterRow>>\n\treadonly tables?: InputMaybe<ReadonlyArray<Scalars['String']['input']>>\n\treadonly transactions?: InputMaybe<ReadonlyArray<Scalars['String']['input']>>\n\treadonly types?: InputMaybe<ReadonlyArray<EventType>>\n}\n\nexport type EventsFilterDate = {\n\treadonly from?: InputMaybe<Scalars['DateTime']['input']>\n\treadonly to?: InputMaybe<Scalars['DateTime']['input']>\n}\n\nexport enum EventsOrder {\n\tAppliedAtAsc = 'APPLIED_AT_ASC',\n\tAppliedAtDesc = 'APPLIED_AT_DESC',\n\tCreatedAtAsc = 'CREATED_AT_ASC',\n\tCreatedAtDesc = 'CREATED_AT_DESC'\n}\n\nexport type ExecutedMigration = {\n\treadonly __typename?: 'ExecutedMigration'\n\treadonly checksum?: Maybe<Scalars['String']['output']>\n\treadonly executedAt: Scalars['DateTime']['output']\n\treadonly formatVersion?: Maybe<Scalars['Int']['output']>\n\treadonly modifications?: Maybe<ReadonlyArray<Scalars['Json']['output']>>\n\treadonly name: Scalars['String']['output']\n\treadonly version: Scalars['String']['output']\n}\n\nexport type MigrateError = {\n\treadonly __typename?: 'MigrateError'\n\treadonly code: MigrateErrorCode\n\treadonly developerMessage: Scalars['String']['output']\n\treadonly migration: Scalars['String']['output']\n}\n\nexport enum MigrateErrorCode {\n\tAlreadyExecuted = 'ALREADY_EXECUTED',\n\tContentMigrationFailed = 'CONTENT_MIGRATION_FAILED',\n\tContentMigrationNotSuccessful = 'CONTENT_MIGRATION_NOT_SUCCESSFUL',\n\tInvalidFormat = 'INVALID_FORMAT',\n\tInvalidSchema = 'INVALID_SCHEMA',\n\tMigrationFailed = 'MIGRATION_FAILED',\n\tMustFollowLatest = 'MUST_FOLLOW_LATEST'\n}\n\nexport type MigrateResponse = {\n\treadonly __typename?: 'MigrateResponse'\n\treadonly error?: Maybe<MigrateError>\n\t/** @deprecated Field no longer supported */\n\treadonly errors: ReadonlyArray<MigrateError>\n\treadonly ok: Scalars['Boolean']['output']\n\treadonly result?: Maybe<MigrateResult>\n}\n\nexport type MigrateResult = {\n\treadonly __typename?: 'MigrateResult'\n\treadonly message: Scalars['String']['output']\n}\n\nexport type Migration = {\n\treadonly contentMigration?: InputMaybe<ReadonlyArray<ContentMigration>>\n\t/** @deprecated Use schemaMigration with SCHEMA type */\n\treadonly formatVersion?: InputMaybe<Scalars['Int']['input']>\n\t/** @deprecated Use schemaMigration with SCHEMA type */\n\treadonly modifications?: InputMaybe<ReadonlyArray<Scalars['Json']['input']>>\n\treadonly name: Scalars['String']['input']\n\treadonly schemaMigration?: InputMaybe<SchemaMigration>\n\t/** @deprecated Use schemaMigration with SCHEMA type */\n\treadonly skippedErrors?: InputMaybe<ReadonlyArray<MigrationSkippedError>>\n\treadonly type?: InputMaybe<MigrationType>\n\treadonly version: Scalars['String']['input']\n}\n\nexport type MigrationDeleteError = {\n\treadonly __typename?: 'MigrationDeleteError'\n\treadonly code: MigrationDeleteErrorCode\n\treadonly developerMessage: Scalars['String']['output']\n}\n\nexport enum MigrationDeleteErrorCode {\n\tInvalidFormat = 'INVALID_FORMAT',\n\tNotFound = 'NOT_FOUND'\n}\n\nexport type MigrationDeleteResponse = {\n\treadonly __typename?: 'MigrationDeleteResponse'\n\treadonly error?: Maybe<MigrationDeleteError>\n\treadonly ok: Scalars['Boolean']['output']\n}\n\nexport type MigrationModification = {\n\treadonly formatVersion?: InputMaybe<Scalars['Int']['input']>\n\treadonly modifications?: InputMaybe<ReadonlyArray<Scalars['Json']['input']>>\n\treadonly name?: InputMaybe<Scalars['String']['input']>\n\treadonly version?: InputMaybe<Scalars['String']['input']>\n}\n\nexport type MigrationModifyError = {\n\treadonly __typename?: 'MigrationModifyError'\n\treadonly code: MigrationModifyErrorCode\n\treadonly developerMessage: Scalars['String']['output']\n}\n\nexport enum MigrationModifyErrorCode {\n\tNotFound = 'NOT_FOUND'\n}\n\nexport type MigrationModifyResponse = {\n\treadonly __typename?: 'MigrationModifyResponse'\n\treadonly error?: Maybe<MigrationModifyError>\n\treadonly ok: Scalars['Boolean']['output']\n}\n\nexport type MigrationSkippedError = {\n\treadonly code: Scalars['String']['input']\n\treadonly path?: InputMaybe<Scalars['String']['input']>\n}\n\nexport enum MigrationType {\n\tContent = 'CONTENT',\n\tSchema = 'SCHEMA'\n}\n\nexport type Mutation = {\n\treadonly __typename?: 'Mutation'\n\treadonly forceMigrate: MigrateResponse\n\treadonly migrate: MigrateResponse\n\treadonly migrationDelete: MigrationDeleteResponse\n\treadonly migrationModify: MigrationModifyResponse\n\treadonly truncate: TruncateResponse\n}\n\n\nexport type MutationForceMigrateArgs = {\n\tmigrations: ReadonlyArray<Migration>\n}\n\n\nexport type MutationMigrateArgs = {\n\tmigrations: ReadonlyArray<Migration>\n}\n\n\nexport type MutationMigrationDeleteArgs = {\n\tmigration: Scalars['String']['input']\n}\n\n\nexport type MutationMigrationModifyArgs = {\n\tmigration: Scalars['String']['input']\n\tmodification: MigrationModification\n}\n\nexport type Query = {\n\treadonly __typename?: 'Query'\n\treadonly events: ReadonlyArray<Event>\n\treadonly executedMigrations: ReadonlyArray<ExecutedMigration>\n\treadonly schema: Scalars['Schema']['output']\n\treadonly stages: ReadonlyArray<Stage>\n}\n\n\nexport type QueryEventsArgs = {\n\targs?: InputMaybe<EventsArgs>\n}\n\n\nexport type QueryExecutedMigrationsArgs = {\n\tversion?: InputMaybe<Scalars['String']['input']>\n}\n\nexport type SchemaMigration = {\n\treadonly formatVersion: Scalars['Int']['input']\n\treadonly modifications: ReadonlyArray<Scalars['Json']['input']>\n\treadonly skippedErrors?: InputMaybe<ReadonlyArray<MigrationSkippedError>>\n}\n\nexport type Stage = {\n\treadonly __typename?: 'Stage'\n\treadonly id: Scalars['String']['output']\n\treadonly name: Scalars['String']['output']\n\treadonly slug: Scalars['String']['output']\n}\n\nexport type TruncateResponse = {\n\treadonly __typename?: 'TruncateResponse'\n\treadonly ok: Scalars['Boolean']['output']\n}\n\nexport type UpdateEvent = Event & {\n\treadonly __typename?: 'UpdateEvent'\n\treadonly appliedAt: Scalars['DateTime']['output']\n\treadonly createdAt: Scalars['DateTime']['output']\n\treadonly description: Scalars['String']['output']\n\treadonly diffValues: Scalars['Json']['output']\n\treadonly id: Scalars['String']['output']\n\treadonly identityDescription: Scalars['String']['output']\n\treadonly identityId: Scalars['String']['output']\n\treadonly oldValues: Scalars['Json']['output']\n\treadonly primaryKey: ReadonlyArray<Scalars['PrimaryKey']['output']>\n\treadonly tableName: Scalars['String']['output']\n\treadonly transactionId: Scalars['String']['output']\n\treadonly type: EventType\n}\n\n\n\nexport type ResolverTypeWrapper<T> = Promise<T> | T\n\n\nexport type ResolverWithResolve<TResult, TParent, TContext, TArgs> = {\n\tresolve: ResolverFn<TResult, TParent, TContext, TArgs>\n}\nexport type Resolver<TResult, TParent = {}, TContext = {}, TArgs = {}> = ResolverFn<TResult, TParent, TContext, TArgs> | ResolverWithResolve<TResult, TParent, TContext, TArgs>\n\nexport type ResolverFn<TResult, TParent, TContext, TArgs> = (\n\tparent: TParent,\n\targs: TArgs,\n\tcontext: TContext,\n\tinfo: GraphQLResolveInfo\n) => Promise<TResult> | TResult\n\nexport type SubscriptionSubscribeFn<TResult, TParent, TContext, TArgs> = (\n\tparent: TParent,\n\targs: TArgs,\n\tcontext: TContext,\n\tinfo: GraphQLResolveInfo\n) => AsyncIterable<TResult> | Promise<AsyncIterable<TResult>>\n\nexport type SubscriptionResolveFn<TResult, TParent, TContext, TArgs> = (\n\tparent: TParent,\n\targs: TArgs,\n\tcontext: TContext,\n\tinfo: GraphQLResolveInfo\n) => TResult | Promise<TResult>\n\nexport interface SubscriptionSubscriberObject<TResult, TKey extends string, TParent, TContext, TArgs> {\n\tsubscribe: SubscriptionSubscribeFn<{ [key in TKey]: TResult }, TParent, TContext, TArgs>\n\tresolve?: SubscriptionResolveFn<TResult, { [key in TKey]: TResult }, TContext, TArgs>\n}\n\nexport interface SubscriptionResolverObject<TResult, TParent, TContext, TArgs> {\n\tsubscribe: SubscriptionSubscribeFn<any, TParent, TContext, TArgs>\n\tresolve: SubscriptionResolveFn<TResult, any, TContext, TArgs>\n}\n\nexport type SubscriptionObject<TResult, TKey extends string, TParent, TContext, TArgs> =\n | SubscriptionSubscriberObject<TResult, TKey, TParent, TContext, TArgs>\n | SubscriptionResolverObject<TResult, TParent, TContext, TArgs>\n\nexport type SubscriptionResolver<TResult, TKey extends string, TParent = {}, TContext = {}, TArgs = {}> =\n | ((...args: any[]) => SubscriptionObject<TResult, TKey, TParent, TContext, TArgs>)\n | SubscriptionObject<TResult, TKey, TParent, TContext, TArgs>\n\nexport type TypeResolveFn<TTypes, TParent = {}, TContext = {}> = (\n\tparent: TParent,\n\tcontext: TContext,\n\tinfo: GraphQLResolveInfo\n) => Maybe<TTypes> | Promise<Maybe<TTypes>>\n\nexport type IsTypeOfResolverFn<T = {}, TContext = {}> = (obj: T, context: TContext, info: GraphQLResolveInfo) => boolean | Promise<boolean>\n\nexport type NextResolverFn<T> = () => Promise<T>\n\nexport type DirectiveResolverFn<TResult = {}, TParent = {}, TContext = {}, TArgs = {}> = (\n\tnext: NextResolverFn<TResult>,\n\tparent: TParent,\n\targs: TArgs,\n\tcontext: TContext,\n\tinfo: GraphQLResolveInfo\n) => TResult | Promise<TResult>\n\n\n/** Mapping of interface types */\nexport type ResolversInterfaceTypes<RefType extends Record<string, unknown>> = {\n\tEvent: (CreateEvent) | (DeleteEvent) | (UpdateEvent)\n}\n\n/** Mapping between all available schema types and the resolvers types */\nexport type ResolversTypes = {\n\tBoolean: ResolverTypeWrapper<Scalars['Boolean']['output']>\n\tContentMigration: ContentMigration\n\tSchema: ResolverTypeWrapper<Scalars['Schema']['output']>\n\tCreateEvent: ResolverTypeWrapper<CreateEvent>\n\tDateTime: ResolverTypeWrapper<Scalars['DateTime']['output']>\n\tDeleteEvent: ResolverTypeWrapper<DeleteEvent>\n\tEvent: ResolverTypeWrapper<ResolversInterfaceTypes<ResolversTypes>['Event']>\n\tEventFilterRow: EventFilterRow\n\tEventType: EventType\n\tEventsArgs: EventsArgs\n\tEventsFilter: EventsFilter\n\tEventsFilterDate: EventsFilterDate\n\tEventsOrder: EventsOrder\n\tExecutedMigration: ResolverTypeWrapper<ExecutedMigration>\n\tInt: ResolverTypeWrapper<Scalars['Int']['output']>\n\tJson: ResolverTypeWrapper<Scalars['Json']['output']>\n\tMigrateError: ResolverTypeWrapper<MigrateError>\n\tMigrateErrorCode: MigrateErrorCode\n\tMigrateResponse: ResolverTypeWrapper<MigrateResponse>\n\tMigrateResult: ResolverTypeWrapper<MigrateResult>\n\tMigration: Migration\n\tMigrationDeleteError: ResolverTypeWrapper<MigrationDeleteError>\n\tMigrationDeleteErrorCode: MigrationDeleteErrorCode\n\tMigrationDeleteResponse: ResolverTypeWrapper<MigrationDeleteResponse>\n\tMigrationModification: MigrationModification\n\tMigrationModifyError: ResolverTypeWrapper<MigrationModifyError>\n\tMigrationModifyErrorCode: MigrationModifyErrorCode\n\tMigrationModifyResponse: ResolverTypeWrapper<MigrationModifyResponse>\n\tMigrationSkippedError: MigrationSkippedError\n\tMigrationType: MigrationType\n\tMutation: ResolverTypeWrapper<{}>\n\tPrimaryKey: ResolverTypeWrapper<Scalars['PrimaryKey']['output']>\n\tQuery: ResolverTypeWrapper<{}>\n\tSchemaMigration: SchemaMigration\n\tStage: ResolverTypeWrapper<Stage>\n\tString: ResolverTypeWrapper<Scalars['String']['output']>\n\tTruncateResponse: ResolverTypeWrapper<TruncateResponse>\n\tUpdateEvent: ResolverTypeWrapper<UpdateEvent>\n}\n\n/** Mapping between all available schema types and the resolvers parents */\nexport type ResolversParentTypes = {\n\tBoolean: Scalars['Boolean']['output']\n\tContentMigration: ContentMigration\n\tSchema: Scalars['Schema']['output']\n\tCreateEvent: CreateEvent\n\tDateTime: Scalars['DateTime']['output']\n\tDeleteEvent: DeleteEvent\n\tEvent: ResolversInterfaceTypes<ResolversParentTypes>['Event']\n\tEventFilterRow: EventFilterRow\n\tEventsArgs: EventsArgs\n\tEventsFilter: EventsFilter\n\tEventsFilterDate: EventsFilterDate\n\tExecutedMigration: ExecutedMigration\n\tInt: Scalars['Int']['output']\n\tJson: Scalars['Json']['output']\n\tMigrateError: MigrateError\n\tMigrateResponse: MigrateResponse\n\tMigrateResult: MigrateResult\n\tMigration: Migration\n\tMigrationDeleteError: MigrationDeleteError\n\tMigrationDeleteResponse: MigrationDeleteResponse\n\tMigrationModification: MigrationModification\n\tMigrationModifyError: MigrationModifyError\n\tMigrationModifyResponse: MigrationModifyResponse\n\tMigrationSkippedError: MigrationSkippedError\n\tMutation: {}\n\tPrimaryKey: Scalars['PrimaryKey']['output']\n\tQuery: {}\n\tSchemaMigration: SchemaMigration\n\tStage: Stage\n\tString: Scalars['String']['output']\n\tTruncateResponse: TruncateResponse\n\tUpdateEvent: UpdateEvent\n}\n\nexport interface SchemaScalarConfig extends GraphQLScalarTypeConfig<ResolversTypes['Schema'], any> {\n\tname: 'Schema'\n}\n\nexport type CreateEventResolvers<ContextType = any, ParentType extends ResolversParentTypes['CreateEvent'] = ResolversParentTypes['CreateEvent']> = {\n\tappliedAt?: Resolver<ResolversTypes['DateTime'], ParentType, ContextType>\n\tcreatedAt?: Resolver<ResolversTypes['DateTime'], ParentType, ContextType>\n\tdescription?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\tid?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\tidentityDescription?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\tidentityId?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\tnewValues?: Resolver<ResolversTypes['Json'], ParentType, ContextType>\n\tprimaryKey?: Resolver<ReadonlyArray<ResolversTypes['PrimaryKey']>, ParentType, ContextType>\n\ttableName?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\ttransactionId?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\ttype?: Resolver<ResolversTypes['EventType'], ParentType, ContextType>\n\t__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>\n}\n\nexport interface DateTimeScalarConfig extends GraphQLScalarTypeConfig<ResolversTypes['DateTime'], any> {\n\tname: 'DateTime'\n}\n\nexport type DeleteEventResolvers<ContextType = any, ParentType extends ResolversParentTypes['DeleteEvent'] = ResolversParentTypes['DeleteEvent']> = {\n\tappliedAt?: Resolver<ResolversTypes['DateTime'], ParentType, ContextType>\n\tcreatedAt?: Resolver<ResolversTypes['DateTime'], ParentType, ContextType>\n\tdescription?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\tid?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\tidentityDescription?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\tidentityId?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\toldValues?: Resolver<ResolversTypes['Json'], ParentType, ContextType>\n\tprimaryKey?: Resolver<ReadonlyArray<ResolversTypes['PrimaryKey']>, ParentType, ContextType>\n\ttableName?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\ttransactionId?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\ttype?: Resolver<ResolversTypes['EventType'], ParentType, ContextType>\n\t__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>\n}\n\nexport type EventResolvers<ContextType = any, ParentType extends ResolversParentTypes['Event'] = ResolversParentTypes['Event']> = {\n\t__resolveType: TypeResolveFn<'CreateEvent' | 'DeleteEvent' | 'UpdateEvent', ParentType, ContextType>\n\tappliedAt?: Resolver<ResolversTypes['DateTime'], ParentType, ContextType>\n\tcreatedAt?: Resolver<ResolversTypes['DateTime'], ParentType, ContextType>\n\tdescription?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\tid?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\tidentityDescription?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\tidentityId?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\tprimaryKey?: Resolver<ReadonlyArray<ResolversTypes['PrimaryKey']>, ParentType, ContextType>\n\ttableName?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\ttransactionId?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\ttype?: Resolver<ResolversTypes['EventType'], ParentType, ContextType>\n}\n\nexport type ExecutedMigrationResolvers<ContextType = any, ParentType extends ResolversParentTypes['ExecutedMigration'] = ResolversParentTypes['ExecutedMigration']> = {\n\tchecksum?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>\n\texecutedAt?: Resolver<ResolversTypes['DateTime'], ParentType, ContextType>\n\tformatVersion?: Resolver<Maybe<ResolversTypes['Int']>, ParentType, ContextType>\n\tmodifications?: Resolver<Maybe<ReadonlyArray<ResolversTypes['Json']>>, ParentType, ContextType>\n\tname?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\tversion?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\t__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>\n}\n\nexport interface JsonScalarConfig extends GraphQLScalarTypeConfig<ResolversTypes['Json'], any> {\n\tname: 'Json'\n}\n\nexport type MigrateErrorResolvers<ContextType = any, ParentType extends ResolversParentTypes['MigrateError'] = ResolversParentTypes['MigrateError']> = {\n\tcode?: Resolver<ResolversTypes['MigrateErrorCode'], ParentType, ContextType>\n\tdeveloperMessage?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\tmigration?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\t__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>\n}\n\nexport type MigrateResponseResolvers<ContextType = any, ParentType extends ResolversParentTypes['MigrateResponse'] = ResolversParentTypes['MigrateResponse']> = {\n\terror?: Resolver<Maybe<ResolversTypes['MigrateError']>, ParentType, ContextType>\n\terrors?: Resolver<ReadonlyArray<ResolversTypes['MigrateError']>, ParentType, ContextType>\n\tok?: Resolver<ResolversTypes['Boolean'], ParentType, ContextType>\n\tresult?: Resolver<Maybe<ResolversTypes['MigrateResult']>, ParentType, ContextType>\n\t__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>\n}\n\nexport type MigrateResultResolvers<ContextType = any, ParentType extends ResolversParentTypes['MigrateResult'] = ResolversParentTypes['MigrateResult']> = {\n\tmessage?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\t__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>\n}\n\nexport type MigrationDeleteErrorResolvers<ContextType = any, ParentType extends ResolversParentTypes['MigrationDeleteError'] = ResolversParentTypes['MigrationDeleteError']> = {\n\tcode?: Resolver<ResolversTypes['MigrationDeleteErrorCode'], ParentType, ContextType>\n\tdeveloperMessage?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\t__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>\n}\n\nexport type MigrationDeleteResponseResolvers<ContextType = any, ParentType extends ResolversParentTypes['MigrationDeleteResponse'] = ResolversParentTypes['MigrationDeleteResponse']> = {\n\terror?: Resolver<Maybe<ResolversTypes['MigrationDeleteError']>, ParentType, ContextType>\n\tok?: Resolver<ResolversTypes['Boolean'], ParentType, ContextType>\n\t__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>\n}\n\nexport type MigrationModifyErrorResolvers<ContextType = any, ParentType extends ResolversParentTypes['MigrationModifyError'] = ResolversParentTypes['MigrationModifyError']> = {\n\tcode?: Resolver<ResolversTypes['MigrationModifyErrorCode'], ParentType, ContextType>\n\tdeveloperMessage?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\t__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>\n}\n\nexport type MigrationModifyResponseResolvers<ContextType = any, ParentType extends ResolversParentTypes['MigrationModifyResponse'] = ResolversParentTypes['MigrationModifyResponse']> = {\n\terror?: Resolver<Maybe<ResolversTypes['MigrationModifyError']>, ParentType, ContextType>\n\tok?: Resolver<ResolversTypes['Boolean'], ParentType, ContextType>\n\t__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>\n}\n\nexport type MutationResolvers<ContextType = any, ParentType extends ResolversParentTypes['Mutation'] = ResolversParentTypes['Mutation']> = {\n\tforceMigrate?: Resolver<ResolversTypes['MigrateResponse'], ParentType, ContextType, RequireFields<MutationForceMigrateArgs, 'migrations'>>\n\tmigrate?: Resolver<ResolversTypes['MigrateResponse'], ParentType, ContextType, RequireFields<MutationMigrateArgs, 'migrations'>>\n\tmigrationDelete?: Resolver<ResolversTypes['MigrationDeleteResponse'], ParentType, ContextType, RequireFields<MutationMigrationDeleteArgs, 'migration'>>\n\tmigrationModify?: Resolver<ResolversTypes['MigrationModifyResponse'], ParentType, ContextType, RequireFields<MutationMigrationModifyArgs, 'migration' | 'modification'>>\n\ttruncate?: Resolver<ResolversTypes['TruncateResponse'], ParentType, ContextType>\n}\n\nexport interface PrimaryKeyScalarConfig extends GraphQLScalarTypeConfig<ResolversTypes['PrimaryKey'], any> {\n\tname: 'PrimaryKey'\n}\n\nexport type QueryResolvers<ContextType = any, ParentType extends ResolversParentTypes['Query'] = ResolversParentTypes['Query']> = {\n\tevents?: Resolver<ReadonlyArray<ResolversTypes['Event']>, ParentType, ContextType, Partial<QueryEventsArgs>>\n\texecutedMigrations?: Resolver<ReadonlyArray<ResolversTypes['ExecutedMigration']>, ParentType, ContextType, Partial<QueryExecutedMigrationsArgs>>\n\tschema?: Resolver<ResolversTypes['Schema'], ParentType, ContextType>\n\tstages?: Resolver<ReadonlyArray<ResolversTypes['Stage']>, ParentType, ContextType>\n}\n\nexport type StageResolvers<ContextType = any, ParentType extends ResolversParentTypes['Stage'] = ResolversParentTypes['Stage']> = {\n\tid?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\tname?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\tslug?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\t__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>\n}\n\nexport type TruncateResponseResolvers<ContextType = any, ParentType extends ResolversParentTypes['TruncateResponse'] = ResolversParentTypes['TruncateResponse']> = {\n\tok?: Resolver<ResolversTypes['Boolean'], ParentType, ContextType>\n\t__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>\n}\n\nexport type UpdateEventResolvers<ContextType = any, ParentType extends ResolversParentTypes['UpdateEvent'] = ResolversParentTypes['UpdateEvent']> = {\n\tappliedAt?: Resolver<ResolversTypes['DateTime'], ParentType, ContextType>\n\tcreatedAt?: Resolver<ResolversTypes['DateTime'], ParentType, ContextType>\n\tdescription?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\tdiffValues?: Resolver<ResolversTypes['Json'], ParentType, ContextType>\n\tid?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\tidentityDescription?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\tidentityId?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\toldValues?: Resolver<ResolversTypes['Json'], ParentType, ContextType>\n\tprimaryKey?: Resolver<ReadonlyArray<ResolversTypes['PrimaryKey']>, ParentType, ContextType>\n\ttableName?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\ttransactionId?: Resolver<ResolversTypes['String'], ParentType, ContextType>\n\ttype?: Resolver<ResolversTypes['EventType'], ParentType, ContextType>\n\t__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>\n}\n\nexport type Resolvers<ContextType = any> = {\n\tSchema?: GraphQLScalarType\n\tCreateEvent?: CreateEventResolvers<ContextType>\n\tDateTime?: GraphQLScalarType\n\tDeleteEvent?: DeleteEventResolvers<ContextType>\n\tEvent?: EventResolvers<ContextType>\n\tExecutedMigration?: ExecutedMigrationResolvers<ContextType>\n\tJson?: GraphQLScalarType\n\tMigrateError?: MigrateErrorResolvers<ContextType>\n\tMigrateResponse?: MigrateResponseResolvers<ContextType>\n\tMigrateResult?: MigrateResultResolvers<ContextType>\n\tMigrationDeleteError?: MigrationDeleteErrorResolvers<ContextType>\n\tMigrationDeleteResponse?: MigrationDeleteResponseResolvers<ContextType>\n\tMigrationModifyError?: MigrationModifyErrorResolvers<ContextType>\n\tMigrationModifyResponse?: MigrationModifyResponseResolvers<ContextType>\n\tMutation?: MutationResolvers<ContextType>\n\tPrimaryKey?: GraphQLScalarType\n\tQuery?: QueryResolvers<ContextType>\n\tStage?: StageResolvers<ContextType>\n\tTruncateResponse?: TruncateResponseResolvers<ContextType>\n\tUpdateEvent?: UpdateEventResolvers<ContextType>\n}\n\n"],"names":["EventType","EventsOrder","MigrateErrorCode","MigrationDeleteErrorCode","MigrationModifyErrorCode","MigrationType"],"mappings":"AA6EY,IAAA,8BAAAA,eAAL;AACNA,aAAA,QAAS,IAAA;AACTA,aAAA,QAAS,IAAA;AACTA,aAAA,QAAS,IAAA;AAHEA,SAAAA;AAAA,GAAA,aAAA,CAAA,CAAA;AA8BA,IAAA,gCAAAC,iBAAL;AACNA,eAAA,cAAe,IAAA;AACfA,eAAA,eAAgB,IAAA;AAChBA,eAAA,cAAe,IAAA;AACfA,eAAA,eAAgB,IAAA;AAJLA,SAAAA;AAAA,GAAA,eAAA,CAAA,CAAA;AAwBA,IAAA,qCAAAC,sBAAL;AACNA,oBAAA,iBAAkB,IAAA;AAClBA,oBAAA,wBAAyB,IAAA;AACzBA,oBAAA,+BAAgC,IAAA;AAChCA,oBAAA,eAAgB,IAAA;AAChBA,oBAAA,eAAgB,IAAA;AAChBA,oBAAA,iBAAkB,IAAA;AAClBA,oBAAA,kBAAmB,IAAA;AAPRA,SAAAA;AAAA,GAAA,oBAAA,CAAA,CAAA;AA4CA,IAAA,6CAAAC,8BAAL;AACNA,4BAAA,eAAgB,IAAA;AAChBA,4BAAA,UAAW,IAAA;AAFAA,SAAAA;AAAA,GAAA,4BAAA,CAAA,CAAA;AAwBA,IAAA,6CAAAC,8BAAL;AACNA,4BAAA,UAAW,IAAA;AADAA,SAAAA;AAAA,GAAA,4BAAA,CAAA,CAAA;AAeA,IAAA,kCAAAC,mBAAL;AACNA,iBAAA,SAAU,IAAA;AACVA,iBAAA,QAAS,IAAA;AAFEA,SAAAA;AAAA,GAAA,iBAAA,CAAA,CAAA;"}
|
|
@@ -21,7 +21,7 @@ const LatestTransactionIdByStageQuery = require("./src/model/queries/events/Late
|
|
|
21
21
|
const StageBySlugQuery = require("./src/model/queries/stages/StageBySlugQuery.cjs");
|
|
22
22
|
const StagesQuery = require("./src/model/queries/stages/StagesQuery.cjs");
|
|
23
23
|
const ProjectMigrator = require("./src/model/migrations/ProjectMigrator.cjs");
|
|
24
|
-
const
|
|
24
|
+
const SchemaProvider = require("./src/model/migrations/SchemaProvider.cjs");
|
|
25
25
|
const StageCreator = require("./src/model/stages/StageCreator.cjs");
|
|
26
26
|
const ProjectInitializer = require("./src/model/ProjectInitializer.cjs");
|
|
27
27
|
const SystemContainer = require("./src/SystemContainer.cjs");
|
|
@@ -56,7 +56,7 @@ exports.LatestTransactionIdByStageQuery = LatestTransactionIdByStageQuery.Latest
|
|
|
56
56
|
exports.StageBySlugQuery = StageBySlugQuery.StageBySlugQuery;
|
|
57
57
|
exports.StagesQuery = StagesQuery.StagesQuery;
|
|
58
58
|
exports.ProjectMigrator = ProjectMigrator.ProjectMigrator;
|
|
59
|
-
exports.
|
|
59
|
+
exports.SchemaProvider = SchemaProvider.SchemaProvider;
|
|
60
60
|
exports.StageCreator = StageCreator.StageCreator;
|
|
61
61
|
exports.ProjectInitializer = ProjectInitializer.ProjectInitializer;
|
|
62
62
|
exports.SystemContainerFactory = SystemContainer.SystemContainerFactory;
|
package/dist/production/index.js
CHANGED
|
@@ -19,7 +19,7 @@ import { LatestTransactionIdByStageQuery } from "./src/model/queries/events/Late
|
|
|
19
19
|
import { StageBySlugQuery } from "./src/model/queries/stages/StageBySlugQuery.js";
|
|
20
20
|
import { StagesQuery } from "./src/model/queries/stages/StagesQuery.js";
|
|
21
21
|
import { ProjectMigrator } from "./src/model/migrations/ProjectMigrator.js";
|
|
22
|
-
import {
|
|
22
|
+
import { SchemaProvider } from "./src/model/migrations/SchemaProvider.js";
|
|
23
23
|
import { StageCreator } from "./src/model/stages/StageCreator.js";
|
|
24
24
|
import { ProjectInitializer } from "./src/model/ProjectInitializer.js";
|
|
25
25
|
import { SystemContainerFactory } from "./src/SystemContainer.js";
|
|
@@ -50,7 +50,7 @@ export {
|
|
|
50
50
|
ResponseOk,
|
|
51
51
|
types as Schema,
|
|
52
52
|
SchemaMigrator,
|
|
53
|
-
|
|
53
|
+
SchemaProvider,
|
|
54
54
|
ShouldNotHappenException,
|
|
55
55
|
StageBySlugQuery,
|
|
56
56
|
StageCreator,
|
|
@@ -12,7 +12,7 @@ const SchemaDatabaseMetadataResolverStore = require("./model/metadata/SchemaData
|
|
|
12
12
|
const ExecutedMigrationsResolver = require("./model/migrations/ExecutedMigrationsResolver.cjs");
|
|
13
13
|
const MigrationAlterer = require("./model/migrations/MigrationAlterer.cjs");
|
|
14
14
|
const ProjectMigrator = require("./model/migrations/ProjectMigrator.cjs");
|
|
15
|
-
const
|
|
15
|
+
const SchemaProvider = require("./model/migrations/SchemaProvider.cjs");
|
|
16
16
|
require("./schema/dev.graphql.cjs");
|
|
17
17
|
require("./schema/system.graphql.cjs");
|
|
18
18
|
require("@contember/logger");
|
|
@@ -26,6 +26,7 @@ const StagesQueryResolver = require("./resolvers/query/StagesQueryResolver.cjs")
|
|
|
26
26
|
const SystemResolverContext = require("./resolvers/SystemResolverContext.cjs");
|
|
27
27
|
const ResolverFactory = require("./resolvers/ResolverFactory.cjs");
|
|
28
28
|
const EventOldValuesResolver = require("./resolvers/types/EventOldValuesResolver.cjs");
|
|
29
|
+
const SchemaQueryResolver = require("./resolvers/query/SchemaQueryResolver.cjs");
|
|
29
30
|
class SystemContainerFactory {
|
|
30
31
|
constructor(providers, modificationHandlerFactory, contentQueryExecutor) {
|
|
31
32
|
this.providers = providers;
|
|
@@ -37,11 +38,11 @@ class SystemContainerFactory {
|
|
|
37
38
|
"systemResolversFactory",
|
|
38
39
|
"authorizator",
|
|
39
40
|
"resolverContextFactory",
|
|
40
|
-
"
|
|
41
|
+
"schemaProvider"
|
|
41
42
|
);
|
|
42
43
|
}
|
|
43
44
|
createBuilder({ identityFetcher }) {
|
|
44
|
-
return new dic.Builder({}).addService("providers", () => this.providers).addService("modificationHandlerFactory", () => this.modificationHandlerFactory).addService("identityFetcher", () => identityFetcher).addService("schemaMigrator", ({ modificationHandlerFactory }) => new schemaMigrations.SchemaMigrator(modificationHandlerFactory)).addService("executedMigrationsResolver", ({}) => new ExecutedMigrationsResolver.ExecutedMigrationsResolver()).addService("
|
|
45
|
+
return new dic.Builder({}).addService("providers", () => this.providers).addService("modificationHandlerFactory", () => this.modificationHandlerFactory).addService("identityFetcher", () => identityFetcher).addService("schemaMigrator", ({ modificationHandlerFactory }) => new schemaMigrations.SchemaMigrator(modificationHandlerFactory)).addService("executedMigrationsResolver", ({}) => new ExecutedMigrationsResolver.ExecutedMigrationsResolver()).addService("schemaProvider", ({ executedMigrationsResolver, schemaMigrator }) => new SchemaProvider.SchemaProvider(executedMigrationsResolver, schemaMigrator)).addService("accessEvaluator", ({}) => new authorization.AccessEvaluator.PermissionEvaluator(new PermissionsFactory.PermissionsFactory().create())).addService("authorizator", ({ accessEvaluator }) => new authorization.Authorizator.Default(accessEvaluator)).addService("schemaDiffer", ({ schemaMigrator }) => new schemaMigrations.SchemaDiffer(schemaMigrator)).addService("migrationDescriber", ({ modificationHandlerFactory }) => new schemaMigrations.MigrationDescriber(modificationHandlerFactory)).addService("databaseMetadataResolver", () => new Database.DatabaseMetadataResolver()).addService("migrationsDatabaseMetadataResolverStoreFactory", ({ databaseMetadataResolver }) => new SchemaDatabaseMetadataResolverStore.MigrationsDatabaseMetadataResolverStoreFactory(databaseMetadataResolver)).addService("projectMigrator", ({ migrationDescriber, schemaProvider, executedMigrationsResolver, migrationsDatabaseMetadataResolverStoreFactory }) => new ProjectMigrator.ProjectMigrator(migrationDescriber, schemaProvider, executedMigrationsResolver, migrationsDatabaseMetadataResolverStoreFactory, this.contentQueryExecutor)).addService("projectTruncateExecutor", () => new ProjectTruncateExecutor.ProjectTruncateExecutor()).addService("migrationAlterer", ({ schemaProvider }) => new MigrationAlterer.MigrationAlterer(schemaProvider)).addService("eventResponseBuilder", ({ identityFetcher: identityFetcher2 }) => new EventResponseBuilder.EventResponseBuilder(identityFetcher2)).addService("stagesQueryResolver", () => new StagesQueryResolver.StagesQueryResolver()).addService("executedMigrationsQueryResolver", () => new ExecutedMigrationsQueryResolver.ExecutedMigrationsQueryResolver()).addService("migrateMutationResolver", ({ projectMigrator }) => new MigrateMutationResolver.MigrateMutationResolver(projectMigrator)).addService("truncateMutationResolver", ({ projectTruncateExecutor }) => new TruncateMutationResolver.TruncateMutationResolver(projectTruncateExecutor)).addService("migrationAlterMutationResolver", ({ migrationAlterer }) => new MigrationAlterMutationResolver.MigrationAlterMutationResolver(migrationAlterer)).addService("eventsQueryResolver", ({ eventResponseBuilder }) => new EventsQueryResolver.EventsQueryResolver(eventResponseBuilder)).addService("eventOldValuesResolver", () => new EventOldValuesResolver.EventOldValuesResolver()).addService("schemaQueryResolver", () => new SchemaQueryResolver.SchemaQueryResolver()).addService("systemResolversFactory", ({ stagesQueryResolver, executedMigrationsQueryResolver, migrateMutationResolver, truncateMutationResolver, migrationAlterMutationResolver, eventsQueryResolver, eventOldValuesResolver, schemaQueryResolver }) => new ResolverFactory.ResolverFactory(stagesQueryResolver, executedMigrationsQueryResolver, migrateMutationResolver, truncateMutationResolver, migrationAlterMutationResolver, eventsQueryResolver, eventOldValuesResolver, schemaQueryResolver)).addService("resolverContextFactory", ({ authorizator }) => new SystemResolverContext.SystemResolverContextFactory(authorizator));
|
|
45
46
|
}
|
|
46
47
|
}
|
|
47
48
|
exports.SystemContainerFactory = SystemContainerFactory;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SystemContainer.cjs","sources":["../../../../packages/engine-system-api/src/SystemContainer.ts"],"sourcesContent":["import { AccessEvaluator, Authorizator } from '@contember/authorization'\nimport { Builder, Container } from '@contember/dic'\nimport {\n\tMigrationDescriber,\n\tModificationHandlerFactory,\n\tSchemaDiffer,\n\tSchemaMigrator,\n} from '@contember/schema-migrations'\nimport {\n\tContentQueryExecutor,\n\tEventResponseBuilder,\n\tExecutedMigrationsResolver,\n\tIdentityFetcher,\n\tMigrationAlterer,\n\tMigrationsDatabaseMetadataResolverStoreFactory,\n\tPermissionsFactory,\n\tProjectMigrator,\n\tProjectTruncateExecutor,\n
|
|
1
|
+
{"version":3,"file":"SystemContainer.cjs","sources":["../../../../packages/engine-system-api/src/SystemContainer.ts"],"sourcesContent":["import { AccessEvaluator, Authorizator } from '@contember/authorization'\nimport { Builder, Container } from '@contember/dic'\nimport {\n\tMigrationDescriber,\n\tModificationHandlerFactory,\n\tSchemaDiffer,\n\tSchemaMigrator,\n} from '@contember/schema-migrations'\nimport {\n\tContentQueryExecutor,\n\tEventResponseBuilder,\n\tExecutedMigrationsResolver,\n\tIdentityFetcher,\n\tMigrationAlterer,\n\tMigrationsDatabaseMetadataResolverStoreFactory,\n\tPermissionsFactory,\n\tProjectMigrator,\n\tProjectTruncateExecutor,\n} from './model'\nimport { UuidProvider } from './utils'\nimport {\n\tEventsQueryResolver,\n\tExecutedMigrationsQueryResolver,\n\tMigrateMutationResolver,\n\tMigrationAlterMutationResolver,\n\tResolverFactory,\n\tStagesQueryResolver,\n\tSystemResolverContextFactory,\n\tTruncateMutationResolver,\n} from './resolvers'\nimport { EventOldValuesResolver } from './resolvers/types'\nimport { DatabaseMetadataResolver } from '@contember/database'\nimport { SchemaProvider } from './model'\nimport { SchemaQueryResolver } from './resolvers/query/SchemaQueryResolver'\n\nexport interface SystemContainer {\n\tsystemResolversFactory: ResolverFactory\n\tauthorizator: Authorizator\n\tresolverContextFactory: SystemResolverContextFactory\n\tschemaProvider: SchemaProvider\n}\n\ntype Args = {\n\tidentityFetcher: IdentityFetcher\n}\n\nexport class SystemContainerFactory {\n\tconstructor(\n\t\tprivate readonly providers: UuidProvider,\n\t\tprivate readonly modificationHandlerFactory: ModificationHandlerFactory,\n\t\tprivate readonly contentQueryExecutor: ContentQueryExecutor,\n\t) {\n\t}\n\n\tpublic create(container: Args): Container<SystemContainer> {\n\t\treturn this.createBuilder(container)\n\t\t\t.build()\n\t\t\t.pick(\n\t\t\t\t'systemResolversFactory',\n\t\t\t\t'authorizator',\n\t\t\t\t'resolverContextFactory',\n\t\t\t\t'schemaProvider',\n\t\t\t)\n\t}\n\tpublic createBuilder({ identityFetcher }: Args) {\n\t\treturn new Builder({})\n\t\t\t.addService('providers', () =>\n\t\t\t\tthis.providers)\n\t\t\t.addService('modificationHandlerFactory', () =>\n\t\t\t\tthis.modificationHandlerFactory)\n\t\t\t.addService('identityFetcher', () =>\n\t\t\t\tidentityFetcher)\n\t\t\t.addService('schemaMigrator', ({ modificationHandlerFactory }) =>\n\t\t\t\tnew SchemaMigrator(modificationHandlerFactory))\n\t\t\t.addService('executedMigrationsResolver', ({}) =>\n\t\t\t\tnew ExecutedMigrationsResolver())\n\t\t\t.addService('schemaProvider', ({ executedMigrationsResolver, schemaMigrator }) =>\n\t\t\t\tnew SchemaProvider(executedMigrationsResolver, schemaMigrator))\n\t\t\t.addService('accessEvaluator', ({}) =>\n\t\t\t\tnew AccessEvaluator.PermissionEvaluator(new PermissionsFactory().create()))\n\t\t\t.addService('authorizator', ({ accessEvaluator }): Authorizator =>\n\t\t\t\tnew Authorizator.Default(accessEvaluator))\n\t\t\t.addService('schemaDiffer', ({ schemaMigrator }) =>\n\t\t\t\tnew SchemaDiffer(schemaMigrator))\n\t\t\t.addService('migrationDescriber', ({ modificationHandlerFactory }) =>\n\t\t\t\tnew MigrationDescriber(modificationHandlerFactory))\n\t\t\t.addService('databaseMetadataResolver', () =>\n\t\t\t\tnew DatabaseMetadataResolver())\n\t\t\t.addService('migrationsDatabaseMetadataResolverStoreFactory', ({ databaseMetadataResolver }) =>\n\t\t\t\tnew MigrationsDatabaseMetadataResolverStoreFactory(databaseMetadataResolver))\n\t\t\t.addService('projectMigrator', ({ migrationDescriber, schemaProvider, executedMigrationsResolver, migrationsDatabaseMetadataResolverStoreFactory }) =>\n\t\t\t\tnew ProjectMigrator(migrationDescriber, schemaProvider, executedMigrationsResolver, migrationsDatabaseMetadataResolverStoreFactory, this.contentQueryExecutor))\n\t\t\t.addService('projectTruncateExecutor', () =>\n\t\t\t\tnew ProjectTruncateExecutor())\n\t\t\t.addService('migrationAlterer', ({ schemaProvider }) =>\n\t\t\t\tnew MigrationAlterer(schemaProvider))\n\t\t\t.addService('eventResponseBuilder', ({ identityFetcher }) =>\n\t\t\t\tnew EventResponseBuilder(identityFetcher))\n\t\t\t.addService('stagesQueryResolver', () =>\n\t\t\t\tnew StagesQueryResolver())\n\t\t\t.addService('executedMigrationsQueryResolver', () =>\n\t\t\t\tnew ExecutedMigrationsQueryResolver())\n\t\t\t.addService('migrateMutationResolver', ({ projectMigrator }) =>\n\t\t\t\tnew MigrateMutationResolver(projectMigrator))\n\t\t\t.addService('truncateMutationResolver', ({ projectTruncateExecutor }) =>\n\t\t\t\tnew TruncateMutationResolver(projectTruncateExecutor))\n\t\t\t.addService('migrationAlterMutationResolver', ({ migrationAlterer }) =>\n\t\t\t\tnew MigrationAlterMutationResolver(migrationAlterer))\n\t\t\t.addService('eventsQueryResolver', ({ eventResponseBuilder }) =>\n\t\t\t\tnew EventsQueryResolver(eventResponseBuilder))\n\t\t\t.addService('eventOldValuesResolver', () =>\n\t\t\t\tnew EventOldValuesResolver())\n\t\t\t.addService('schemaQueryResolver', () =>\n\t\t\t\tnew SchemaQueryResolver())\n\t\t\t.addService('systemResolversFactory', ({ stagesQueryResolver, executedMigrationsQueryResolver, migrateMutationResolver, truncateMutationResolver, migrationAlterMutationResolver, eventsQueryResolver, eventOldValuesResolver, schemaQueryResolver }) =>\n\t\t\t\tnew ResolverFactory(stagesQueryResolver, executedMigrationsQueryResolver, migrateMutationResolver, truncateMutationResolver, migrationAlterMutationResolver, eventsQueryResolver, eventOldValuesResolver, schemaQueryResolver))\n\t\t\t.addService('resolverContextFactory', ({ authorizator }) =>\n\t\t\t\tnew SystemResolverContextFactory(authorizator))\n\t}\n}\n"],"names":["Builder","SchemaMigrator","ExecutedMigrationsResolver","SchemaProvider","AccessEvaluator","PermissionsFactory","Authorizator","SchemaDiffer","MigrationDescriber","DatabaseMetadataResolver","MigrationsDatabaseMetadataResolverStoreFactory","ProjectMigrator","ProjectTruncateExecutor","MigrationAlterer","identityFetcher","EventResponseBuilder","StagesQueryResolver","ExecutedMigrationsQueryResolver","MigrateMutationResolver","TruncateMutationResolver","MigrationAlterMutationResolver","EventsQueryResolver","EventOldValuesResolver","SchemaQueryResolver","ResolverFactory","SystemResolverContextFactory"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CO,MAAM,uBAAuB;AAAA,EACnC,YACkB,WACA,4BACA,sBAChB;AAHgB,SAAA,YAAA;AACA,SAAA,6BAAA;AACA,SAAA,uBAAA;AAAA,EAElB;AAAA,EAEO,OAAO,WAA6C;AAC1D,WAAO,KAAK,cAAc,SAAS,EACjC,MACA,EAAA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,EAEH;AAAA,EACO,cAAc,EAAE,mBAAyB;AAC/C,WAAO,IAAIA,IAAA,QAAQ,EAAE,EACnB,WAAW,aAAa,MACxB,KAAK,SAAS,EACd,WAAW,8BAA8B,MACzC,KAAK,0BAA0B,EAC/B,WAAW,mBAAmB,MAC9B,eAAe,EACf,WAAW,kBAAkB,CAAC,EAAE,2BAA2B,MAC3D,IAAIC,iBAAAA,eAAe,0BAA0B,CAAC,EAC9C,WAAW,8BAA8B,CAAC,OAC1C,IAAIC,2BAA2B,2BAAA,CAAC,EAChC,WAAW,kBAAkB,CAAC,EAAE,4BAA4B,eAC5D,MAAA,IAAIC,eAAAA,eAAe,4BAA4B,cAAc,CAAC,EAC9D,WAAW,mBAAmB,CAAC,CAAA,MAC/B,IAAIC,cAAAA,gBAAgB,oBAAoB,IAAIC,wCAAqB,OAAO,CAAC,CAAC,EAC1E,WAAW,gBAAgB,CAAC,EAAE,gBAAgB,MAC9C,IAAIC,cAAA,aAAa,QAAQ,eAAe,CAAC,EACzC,WAAW,gBAAgB,CAAC,EAAE,qBAC9B,IAAIC,8BAAa,cAAc,CAAC,EAChC,WAAW,sBAAsB,CAAC,EAAE,2BACpC,MAAA,IAAIC,iBAAAA,mBAAmB,0BAA0B,CAAC,EAClD,WAAW,4BAA4B,MACvC,IAAIC,SAAA,yBAAA,CAA0B,EAC9B,WAAW,kDAAkD,CAAC,EAAE,yBAAyB,MACzF,IAAIC,oCAAAA,+CAA+C,wBAAwB,CAAC,EAC5E,WAAW,mBAAmB,CAAC,EAAE,oBAAoB,gBAAgB,4BAA4B,+CAA+C,MAChJ,IAAIC,gBAAA,gBAAgB,oBAAoB,gBAAgB,4BAA4B,gDAAgD,KAAK,oBAAoB,CAAC,EAC9J,WAAW,2BAA2B,MACtC,IAAIC,wBAAA,wBAAA,CAAyB,EAC7B,WAAW,oBAAoB,CAAC,EAAE,eAClC,MAAA,IAAIC,iBAAAA,iBAAiB,cAAc,CAAC,EACpC,WAAW,wBAAwB,CAAC,EAAE,iBAAAC,iBAAgB,MACtD,IAAIC,qBAAAA,qBAAqBD,gBAAe,CAAC,EACzC,WAAW,uBAAuB,MAClC,IAAIE,wCAAqB,CAAA,EACzB,WAAW,mCAAmC,MAC9C,IAAIC,gCAAAA,gCAAiC,CAAA,EACrC,WAAW,2BAA2B,CAAC,EAAE,gBAAA,MACzC,IAAIC,wBAAwB,wBAAA,eAAe,CAAC,EAC5C,WAAW,4BAA4B,CAAC,EAAE,wBAC1C,MAAA,IAAIC,yBAAyB,yBAAA,uBAAuB,CAAC,EACrD,WAAW,kCAAkC,CAAC,EAAE,uBAChD,IAAIC,8DAA+B,gBAAgB,CAAC,EACpD,WAAW,uBAAuB,CAAC,EAAE,2BACrC,IAAIC,wCAAoB,oBAAoB,CAAC,EAC7C,WAAW,0BAA0B,MACrC,IAAIC,uBAAAA,wBAAwB,EAC5B,WAAW,uBAAuB,MAClC,IAAIC,oBAAAA,oBAAqB,CAAA,EACzB,WAAW,0BAA0B,CAAC,EAAE,qBAAqB,iCAAiC,yBAAyB,0BAA0B,gCAAgC,qBAAqB,wBAAwB,0BAC9N,IAAIC,gCAAgB,qBAAqB,iCAAiC,yBAAyB,0BAA0B,gCAAgC,qBAAqB,wBAAwB,mBAAmB,CAAC,EAC9N,WAAW,0BAA0B,CAAC,EAAE,aAAa,MACrD,IAAIC,mDAA6B,YAAY,CAAC;AAAA,EACjD;AACD;;"}
|
|
@@ -10,7 +10,7 @@ import { MigrationsDatabaseMetadataResolverStoreFactory } from "./model/metadata
|
|
|
10
10
|
import { ExecutedMigrationsResolver } from "./model/migrations/ExecutedMigrationsResolver.js";
|
|
11
11
|
import { MigrationAlterer } from "./model/migrations/MigrationAlterer.js";
|
|
12
12
|
import { ProjectMigrator } from "./model/migrations/ProjectMigrator.js";
|
|
13
|
-
import {
|
|
13
|
+
import { SchemaProvider } from "./model/migrations/SchemaProvider.js";
|
|
14
14
|
import "./schema/dev.graphql.js";
|
|
15
15
|
import "./schema/system.graphql.js";
|
|
16
16
|
import "@contember/logger";
|
|
@@ -24,6 +24,7 @@ import { StagesQueryResolver } from "./resolvers/query/StagesQueryResolver.js";
|
|
|
24
24
|
import { SystemResolverContextFactory } from "./resolvers/SystemResolverContext.js";
|
|
25
25
|
import { ResolverFactory } from "./resolvers/ResolverFactory.js";
|
|
26
26
|
import { EventOldValuesResolver } from "./resolvers/types/EventOldValuesResolver.js";
|
|
27
|
+
import { SchemaQueryResolver } from "./resolvers/query/SchemaQueryResolver.js";
|
|
27
28
|
class SystemContainerFactory {
|
|
28
29
|
constructor(providers, modificationHandlerFactory, contentQueryExecutor) {
|
|
29
30
|
this.providers = providers;
|
|
@@ -35,11 +36,11 @@ class SystemContainerFactory {
|
|
|
35
36
|
"systemResolversFactory",
|
|
36
37
|
"authorizator",
|
|
37
38
|
"resolverContextFactory",
|
|
38
|
-
"
|
|
39
|
+
"schemaProvider"
|
|
39
40
|
);
|
|
40
41
|
}
|
|
41
42
|
createBuilder({ identityFetcher }) {
|
|
42
|
-
return new Builder({}).addService("providers", () => this.providers).addService("modificationHandlerFactory", () => this.modificationHandlerFactory).addService("identityFetcher", () => identityFetcher).addService("schemaMigrator", ({ modificationHandlerFactory }) => new SchemaMigrator(modificationHandlerFactory)).addService("executedMigrationsResolver", ({}) => new ExecutedMigrationsResolver()).addService("
|
|
43
|
+
return new Builder({}).addService("providers", () => this.providers).addService("modificationHandlerFactory", () => this.modificationHandlerFactory).addService("identityFetcher", () => identityFetcher).addService("schemaMigrator", ({ modificationHandlerFactory }) => new SchemaMigrator(modificationHandlerFactory)).addService("executedMigrationsResolver", ({}) => new ExecutedMigrationsResolver()).addService("schemaProvider", ({ executedMigrationsResolver, schemaMigrator }) => new SchemaProvider(executedMigrationsResolver, schemaMigrator)).addService("accessEvaluator", ({}) => new AccessEvaluator.PermissionEvaluator(new PermissionsFactory().create())).addService("authorizator", ({ accessEvaluator }) => new Authorizator.Default(accessEvaluator)).addService("schemaDiffer", ({ schemaMigrator }) => new SchemaDiffer(schemaMigrator)).addService("migrationDescriber", ({ modificationHandlerFactory }) => new MigrationDescriber(modificationHandlerFactory)).addService("databaseMetadataResolver", () => new DatabaseMetadataResolver()).addService("migrationsDatabaseMetadataResolverStoreFactory", ({ databaseMetadataResolver }) => new MigrationsDatabaseMetadataResolverStoreFactory(databaseMetadataResolver)).addService("projectMigrator", ({ migrationDescriber, schemaProvider, executedMigrationsResolver, migrationsDatabaseMetadataResolverStoreFactory }) => new ProjectMigrator(migrationDescriber, schemaProvider, executedMigrationsResolver, migrationsDatabaseMetadataResolverStoreFactory, this.contentQueryExecutor)).addService("projectTruncateExecutor", () => new ProjectTruncateExecutor()).addService("migrationAlterer", ({ schemaProvider }) => new MigrationAlterer(schemaProvider)).addService("eventResponseBuilder", ({ identityFetcher: identityFetcher2 }) => new EventResponseBuilder(identityFetcher2)).addService("stagesQueryResolver", () => new StagesQueryResolver()).addService("executedMigrationsQueryResolver", () => new ExecutedMigrationsQueryResolver()).addService("migrateMutationResolver", ({ projectMigrator }) => new MigrateMutationResolver(projectMigrator)).addService("truncateMutationResolver", ({ projectTruncateExecutor }) => new TruncateMutationResolver(projectTruncateExecutor)).addService("migrationAlterMutationResolver", ({ migrationAlterer }) => new MigrationAlterMutationResolver(migrationAlterer)).addService("eventsQueryResolver", ({ eventResponseBuilder }) => new EventsQueryResolver(eventResponseBuilder)).addService("eventOldValuesResolver", () => new EventOldValuesResolver()).addService("schemaQueryResolver", () => new SchemaQueryResolver()).addService("systemResolversFactory", ({ stagesQueryResolver, executedMigrationsQueryResolver, migrateMutationResolver, truncateMutationResolver, migrationAlterMutationResolver, eventsQueryResolver, eventOldValuesResolver, schemaQueryResolver }) => new ResolverFactory(stagesQueryResolver, executedMigrationsQueryResolver, migrateMutationResolver, truncateMutationResolver, migrationAlterMutationResolver, eventsQueryResolver, eventOldValuesResolver, schemaQueryResolver)).addService("resolverContextFactory", ({ authorizator }) => new SystemResolverContextFactory(authorizator));
|
|
43
44
|
}
|
|
44
45
|
}
|
|
45
46
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SystemContainer.js","sources":["../../../../packages/engine-system-api/src/SystemContainer.ts"],"sourcesContent":["import { AccessEvaluator, Authorizator } from '@contember/authorization'\nimport { Builder, Container } from '@contember/dic'\nimport {\n\tMigrationDescriber,\n\tModificationHandlerFactory,\n\tSchemaDiffer,\n\tSchemaMigrator,\n} from '@contember/schema-migrations'\nimport {\n\tContentQueryExecutor,\n\tEventResponseBuilder,\n\tExecutedMigrationsResolver,\n\tIdentityFetcher,\n\tMigrationAlterer,\n\tMigrationsDatabaseMetadataResolverStoreFactory,\n\tPermissionsFactory,\n\tProjectMigrator,\n\tProjectTruncateExecutor,\n
|
|
1
|
+
{"version":3,"file":"SystemContainer.js","sources":["../../../../packages/engine-system-api/src/SystemContainer.ts"],"sourcesContent":["import { AccessEvaluator, Authorizator } from '@contember/authorization'\nimport { Builder, Container } from '@contember/dic'\nimport {\n\tMigrationDescriber,\n\tModificationHandlerFactory,\n\tSchemaDiffer,\n\tSchemaMigrator,\n} from '@contember/schema-migrations'\nimport {\n\tContentQueryExecutor,\n\tEventResponseBuilder,\n\tExecutedMigrationsResolver,\n\tIdentityFetcher,\n\tMigrationAlterer,\n\tMigrationsDatabaseMetadataResolverStoreFactory,\n\tPermissionsFactory,\n\tProjectMigrator,\n\tProjectTruncateExecutor,\n} from './model'\nimport { UuidProvider } from './utils'\nimport {\n\tEventsQueryResolver,\n\tExecutedMigrationsQueryResolver,\n\tMigrateMutationResolver,\n\tMigrationAlterMutationResolver,\n\tResolverFactory,\n\tStagesQueryResolver,\n\tSystemResolverContextFactory,\n\tTruncateMutationResolver,\n} from './resolvers'\nimport { EventOldValuesResolver } from './resolvers/types'\nimport { DatabaseMetadataResolver } from '@contember/database'\nimport { SchemaProvider } from './model'\nimport { SchemaQueryResolver } from './resolvers/query/SchemaQueryResolver'\n\nexport interface SystemContainer {\n\tsystemResolversFactory: ResolverFactory\n\tauthorizator: Authorizator\n\tresolverContextFactory: SystemResolverContextFactory\n\tschemaProvider: SchemaProvider\n}\n\ntype Args = {\n\tidentityFetcher: IdentityFetcher\n}\n\nexport class SystemContainerFactory {\n\tconstructor(\n\t\tprivate readonly providers: UuidProvider,\n\t\tprivate readonly modificationHandlerFactory: ModificationHandlerFactory,\n\t\tprivate readonly contentQueryExecutor: ContentQueryExecutor,\n\t) {\n\t}\n\n\tpublic create(container: Args): Container<SystemContainer> {\n\t\treturn this.createBuilder(container)\n\t\t\t.build()\n\t\t\t.pick(\n\t\t\t\t'systemResolversFactory',\n\t\t\t\t'authorizator',\n\t\t\t\t'resolverContextFactory',\n\t\t\t\t'schemaProvider',\n\t\t\t)\n\t}\n\tpublic createBuilder({ identityFetcher }: Args) {\n\t\treturn new Builder({})\n\t\t\t.addService('providers', () =>\n\t\t\t\tthis.providers)\n\t\t\t.addService('modificationHandlerFactory', () =>\n\t\t\t\tthis.modificationHandlerFactory)\n\t\t\t.addService('identityFetcher', () =>\n\t\t\t\tidentityFetcher)\n\t\t\t.addService('schemaMigrator', ({ modificationHandlerFactory }) =>\n\t\t\t\tnew SchemaMigrator(modificationHandlerFactory))\n\t\t\t.addService('executedMigrationsResolver', ({}) =>\n\t\t\t\tnew ExecutedMigrationsResolver())\n\t\t\t.addService('schemaProvider', ({ executedMigrationsResolver, schemaMigrator }) =>\n\t\t\t\tnew SchemaProvider(executedMigrationsResolver, schemaMigrator))\n\t\t\t.addService('accessEvaluator', ({}) =>\n\t\t\t\tnew AccessEvaluator.PermissionEvaluator(new PermissionsFactory().create()))\n\t\t\t.addService('authorizator', ({ accessEvaluator }): Authorizator =>\n\t\t\t\tnew Authorizator.Default(accessEvaluator))\n\t\t\t.addService('schemaDiffer', ({ schemaMigrator }) =>\n\t\t\t\tnew SchemaDiffer(schemaMigrator))\n\t\t\t.addService('migrationDescriber', ({ modificationHandlerFactory }) =>\n\t\t\t\tnew MigrationDescriber(modificationHandlerFactory))\n\t\t\t.addService('databaseMetadataResolver', () =>\n\t\t\t\tnew DatabaseMetadataResolver())\n\t\t\t.addService('migrationsDatabaseMetadataResolverStoreFactory', ({ databaseMetadataResolver }) =>\n\t\t\t\tnew MigrationsDatabaseMetadataResolverStoreFactory(databaseMetadataResolver))\n\t\t\t.addService('projectMigrator', ({ migrationDescriber, schemaProvider, executedMigrationsResolver, migrationsDatabaseMetadataResolverStoreFactory }) =>\n\t\t\t\tnew ProjectMigrator(migrationDescriber, schemaProvider, executedMigrationsResolver, migrationsDatabaseMetadataResolverStoreFactory, this.contentQueryExecutor))\n\t\t\t.addService('projectTruncateExecutor', () =>\n\t\t\t\tnew ProjectTruncateExecutor())\n\t\t\t.addService('migrationAlterer', ({ schemaProvider }) =>\n\t\t\t\tnew MigrationAlterer(schemaProvider))\n\t\t\t.addService('eventResponseBuilder', ({ identityFetcher }) =>\n\t\t\t\tnew EventResponseBuilder(identityFetcher))\n\t\t\t.addService('stagesQueryResolver', () =>\n\t\t\t\tnew StagesQueryResolver())\n\t\t\t.addService('executedMigrationsQueryResolver', () =>\n\t\t\t\tnew ExecutedMigrationsQueryResolver())\n\t\t\t.addService('migrateMutationResolver', ({ projectMigrator }) =>\n\t\t\t\tnew MigrateMutationResolver(projectMigrator))\n\t\t\t.addService('truncateMutationResolver', ({ projectTruncateExecutor }) =>\n\t\t\t\tnew TruncateMutationResolver(projectTruncateExecutor))\n\t\t\t.addService('migrationAlterMutationResolver', ({ migrationAlterer }) =>\n\t\t\t\tnew MigrationAlterMutationResolver(migrationAlterer))\n\t\t\t.addService('eventsQueryResolver', ({ eventResponseBuilder }) =>\n\t\t\t\tnew EventsQueryResolver(eventResponseBuilder))\n\t\t\t.addService('eventOldValuesResolver', () =>\n\t\t\t\tnew EventOldValuesResolver())\n\t\t\t.addService('schemaQueryResolver', () =>\n\t\t\t\tnew SchemaQueryResolver())\n\t\t\t.addService('systemResolversFactory', ({ stagesQueryResolver, executedMigrationsQueryResolver, migrateMutationResolver, truncateMutationResolver, migrationAlterMutationResolver, eventsQueryResolver, eventOldValuesResolver, schemaQueryResolver }) =>\n\t\t\t\tnew ResolverFactory(stagesQueryResolver, executedMigrationsQueryResolver, migrateMutationResolver, truncateMutationResolver, migrationAlterMutationResolver, eventsQueryResolver, eventOldValuesResolver, schemaQueryResolver))\n\t\t\t.addService('resolverContextFactory', ({ authorizator }) =>\n\t\t\t\tnew SystemResolverContextFactory(authorizator))\n\t}\n}\n"],"names":["identityFetcher"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CO,MAAM,uBAAuB;AAAA,EACnC,YACkB,WACA,4BACA,sBAChB;AAHgB,SAAA,YAAA;AACA,SAAA,6BAAA;AACA,SAAA,uBAAA;AAAA,EAElB;AAAA,EAEO,OAAO,WAA6C;AAC1D,WAAO,KAAK,cAAc,SAAS,EACjC,MACA,EAAA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,EAEH;AAAA,EACO,cAAc,EAAE,mBAAyB;AAC/C,WAAO,IAAI,QAAQ,EAAE,EACnB,WAAW,aAAa,MACxB,KAAK,SAAS,EACd,WAAW,8BAA8B,MACzC,KAAK,0BAA0B,EAC/B,WAAW,mBAAmB,MAC9B,eAAe,EACf,WAAW,kBAAkB,CAAC,EAAE,2BAA2B,MAC3D,IAAI,eAAe,0BAA0B,CAAC,EAC9C,WAAW,8BAA8B,CAAC,OAC1C,IAAI,2BAA2B,CAAC,EAChC,WAAW,kBAAkB,CAAC,EAAE,4BAA4B,eAC5D,MAAA,IAAI,eAAe,4BAA4B,cAAc,CAAC,EAC9D,WAAW,mBAAmB,CAAC,CAAA,MAC/B,IAAI,gBAAgB,oBAAoB,IAAI,qBAAqB,OAAO,CAAC,CAAC,EAC1E,WAAW,gBAAgB,CAAC,EAAE,gBAAgB,MAC9C,IAAI,aAAa,QAAQ,eAAe,CAAC,EACzC,WAAW,gBAAgB,CAAC,EAAE,qBAC9B,IAAI,aAAa,cAAc,CAAC,EAChC,WAAW,sBAAsB,CAAC,EAAE,2BACpC,MAAA,IAAI,mBAAmB,0BAA0B,CAAC,EAClD,WAAW,4BAA4B,MACvC,IAAI,yBAAA,CAA0B,EAC9B,WAAW,kDAAkD,CAAC,EAAE,yBAAyB,MACzF,IAAI,+CAA+C,wBAAwB,CAAC,EAC5E,WAAW,mBAAmB,CAAC,EAAE,oBAAoB,gBAAgB,4BAA4B,+CAA+C,MAChJ,IAAI,gBAAgB,oBAAoB,gBAAgB,4BAA4B,gDAAgD,KAAK,oBAAoB,CAAC,EAC9J,WAAW,2BAA2B,MACtC,IAAI,wBAAA,CAAyB,EAC7B,WAAW,oBAAoB,CAAC,EAAE,eAClC,MAAA,IAAI,iBAAiB,cAAc,CAAC,EACpC,WAAW,wBAAwB,CAAC,EAAE,iBAAAA,iBAAgB,MACtD,IAAI,qBAAqBA,gBAAe,CAAC,EACzC,WAAW,uBAAuB,MAClC,IAAI,oBAAqB,CAAA,EACzB,WAAW,mCAAmC,MAC9C,IAAI,gCAAiC,CAAA,EACrC,WAAW,2BAA2B,CAAC,EAAE,gBAAA,MACzC,IAAI,wBAAwB,eAAe,CAAC,EAC5C,WAAW,4BAA4B,CAAC,EAAE,wBAC1C,MAAA,IAAI,yBAAyB,uBAAuB,CAAC,EACrD,WAAW,kCAAkC,CAAC,EAAE,uBAChD,IAAI,+BAA+B,gBAAgB,CAAC,EACpD,WAAW,uBAAuB,CAAC,EAAE,2BACrC,IAAI,oBAAoB,oBAAoB,CAAC,EAC7C,WAAW,0BAA0B,MACrC,IAAI,wBAAwB,EAC5B,WAAW,uBAAuB,MAClC,IAAI,oBAAqB,CAAA,EACzB,WAAW,0BAA0B,CAAC,EAAE,qBAAqB,iCAAiC,yBAAyB,0BAA0B,gCAAgC,qBAAqB,wBAAwB,0BAC9N,IAAI,gBAAgB,qBAAqB,iCAAiC,yBAAyB,0BAA0B,gCAAgC,qBAAqB,wBAAwB,mBAAmB,CAAC,EAC9N,WAAW,0BAA0B,CAAC,EAAE,aAAa,MACrD,IAAI,6BAA6B,YAAY,CAAC;AAAA,EACjD;AACD;"}
|
|
@@ -10,7 +10,6 @@ require("../schema/dev.graphql.cjs");
|
|
|
10
10
|
require("../schema/system.graphql.cjs");
|
|
11
11
|
require("@contember/schema-utils");
|
|
12
12
|
require("@contember/logger");
|
|
13
|
-
require("../model/migrations/SchemaVersionBuilder.cjs");
|
|
14
13
|
const createEventTrigger = (builder, tableName, primaryColumns) => {
|
|
15
14
|
builder.createTrigger(tableName, "log_event", {
|
|
16
15
|
when: "AFTER",
|
|
@@ -64,7 +63,7 @@ const migrateEvents = (builder, tableName, primaryKeys) => {
|
|
|
64
63
|
`);
|
|
65
64
|
};
|
|
66
65
|
async function _20200506150000composedprimary(builder, args) {
|
|
67
|
-
const schema = await args.schemaResolver(args.connection);
|
|
66
|
+
const schema = (await args.schemaResolver(args.connection)).schema;
|
|
68
67
|
const tablesToMigrate = modelHelpers.getJunctionTables(schema.model);
|
|
69
68
|
const schemas = args.project.stages.map((it) => `stage_${it.slug}`);
|
|
70
69
|
for (const table of tablesToMigrate) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"2020-05-06-150000-composed-primary.cjs","sources":["../../../../../packages/engine-system-api/src/migrations/2020-05-06-150000-composed-primary.ts"],"sourcesContent":["import { escapeValue, MigrationBuilder, Name } from '@contember/database-migrations'\nimport { SystemMigrationArgs } from './types'\nimport { getJunctionTables } from '../model'\nimport { MigrationArgs } from '@contember/database-migrations'\n\nconst createEventTrigger = (builder: MigrationBuilder, tableName: Name, primaryColumns: string[]) => {\n\tbuilder.createTrigger(tableName, 'log_event', {\n\t\twhen: 'AFTER',\n\t\toperation: ['INSERT', 'UPDATE', 'DELETE'],\n\t\tlevel: 'ROW',\n\t\tfunction: {\n\t\t\tschema: 'system',\n\t\t\tname: 'trigger_event',\n\t\t},\n\t\tfunctionParams: primaryColumns,\n\t})\n}\n\nconst migrateEvents = (builder: MigrationBuilder, tableName: string, primaryKeys: [string, string]) => {\n\tbuilder.sql(`\n\t\tWITH RECURSIVE\n\t\t\trecent_events(id, type, previous_id, data, created_at, stage) AS (\n\t\t\t\tSELECT event.id, type, previous_id, data, created_at, stage.slug\n\t\t\t\tFROM event\n\t\t\t\tJOIN stage ON stage.event_id = event.id\n\n\t\t\t\tUNION ALL\n\n\t\t\t\tSELECT event.id, event.type, event.previous_id, event.data, event.created_at, recent_events.stage\n\t\t\t\tFROM event, recent_events\n\t\t\t\tWHERE event.id = recent_events.previous_id\n\t\t\t),\n\t\t\taffected_events AS (\n\t\t\t\tSELECT\n\t\t\t\t\tdelete_event.id AS delete_id,\n\t\t\t\t\tcreate_event.id AS create_id,\n\t\t\t\t\tjson_build_array(\n\t\t\t\t\t\tcreate_event.data -> 'values' ->> ${escapeValue(primaryKeys[0])},\n\t\t\t\t\t\tcreate_event.data -> 'values' ->> ${escapeValue(primaryKeys[1])}\n\t\t\t\t\t) AS id\n\t\t\t\tFROM recent_events AS create_event\n\t\t\t\tLEFT JOIN recent_events AS delete_event\n\t\t\t\t\tON\n\t\t\t\t\t\tdelete_event.data ->> 'rowId' = create_event.data ->> 'rowId'\n\t\t\t\t\t\tAND delete_event.type = 'delete'\n\t\t\t\t\t\tAND delete_event.data ->> 'tableName' = create_event.data ->> 'tableName'\n\t\t\t\tWHERE create_event.type = 'create' AND create_event.data ->> 'tableName' = ${escapeValue(tableName)}\n\t\t\t)\n\t\tUPDATE event\n\t\tSET\n\t\t\tdata = event.data || jsonb_build_object('rowId', affected_events.id)\n\t\tFROM affected_events\n\t\tWHERE\n\t\t event.id = affected_events.create_id\n\t\t OR event.id = affected_events.delete_id\n\t\tRETURNING event.data\n`)\n}\n\nexport default async function (builder: MigrationBuilder, args: MigrationArgs<SystemMigrationArgs>) {\n\tconst schema = await args.schemaResolver(args.connection)\n\tconst tablesToMigrate = getJunctionTables(schema.model)\n\tconst schemas = args.project.stages.map(it => `stage_${it.slug}`)\n\tfor (const table of tablesToMigrate) {\n\t\tconst primaryColumns: [string, string] = [table.joiningColumn.columnName, table.inverseJoiningColumn.columnName]\n\t\tfor (const schema of schemas) {\n\t\t\tbuilder.dropColumn({ name: table.tableName, schema }, 'id')\n\t\t\tbuilder.dropConstraint(\n\t\t\t\t{ name: table.tableName, schema },\n\t\t\t\ttable.tableName + '_uniq_' + table.joiningColumn.columnName + '_' + table.inverseJoiningColumn.columnName,\n\t\t\t)\n\t\t\tbuilder.addConstraint({ name: table.tableName, schema }, null, {\n\t\t\t\tprimaryKey: [table.joiningColumn.columnName, table.inverseJoiningColumn.columnName],\n\t\t\t})\n\t\t\tbuilder.dropTrigger({ name: table.tableName, schema }, 'log_event')\n\t\t\tcreateEventTrigger(builder, { name: table.tableName, schema }, primaryColumns)\n\t\t}\n\t\tmigrateEvents(builder, table.tableName, primaryColumns)\n\t}\n\tfor (const entity of Object.values(schema.model.entities)) {\n\t\tfor (const schema of schemas) {\n\t\t\tbuilder.dropTrigger({ name: entity.tableName, schema }, 'log_event')\n\t\t\tcreateEventTrigger(builder, { name: entity.tableName, schema }, [entity.primaryColumn])\n\t\t}\n\t}\n\tbuilder.sql(`\n\t\tUPDATE event\n\t\tSET data = data || jsonb_build_object('rowId', json_build_array(data ->> 'rowId'))\n\t\tWHERE jsonb_typeof(data -> 'rowId') = 'string'\n\t`)\n\tbuilder.sql(`CREATE OR REPLACE FUNCTION \"trigger_event\"() RETURNS TRIGGER AS\n$$\n\nDECLARE\n\tnew_event_id UUID := uuid_generate_v4();\n\tDECLARE new_event_type TEXT;\n\tDECLARE new_event_data JSONB;\n\tDECLARE current_stage RECORD;\n\tDECLARE update_diff JSONB;\n\tDECLARE primary_values JSONB;\n\tDECLARE old_row JSONB;\n\tDECLARE new_row JSONB;\nBEGIN\n\told_row := CASE WHEN TG_OP = 'DELETE' OR TG_OP = 'UPDATE' THEN to_jsonb(old) ELSE NULL END;\n new_row := CASE WHEN TG_OP = 'INSERT' OR TG_OP = 'UPDATE' THEN to_jsonb(new) ELSE NULL END;\n\tprimary_values = (\n\t\tSELECT jsonb_agg(value ORDER BY array_position(TG_ARGV, key))\n\t\tFROM jsonb_each(COALESCE(old_row, new_row))\n\t\tWHERE key = ANY (TG_ARGV)\n\t);\n\n\tCASE TG_OP\n\t\tWHEN 'INSERT' THEN BEGIN\n\t\t\tnew_event_type := 'create';\n\t\t\tnew_event_data := jsonb_build_object(\n\t\t\t 'tableName', TG_TABLE_NAME,\n\t\t\t 'rowId', primary_values,\n\t\t\t 'values', COALESCE((\n\t\t\t\t SELECT jsonb_object_agg(key, value)\n\t\t\t\t FROM jsonb_each(new_row)\n\t\t\t\t WHERE NOT (key = ANY (TG_ARGV))\n\t\t\t ), '{}'::JSONB)\n\t\t\t\t);\n\t\tEND;\n\t\tWHEN 'UPDATE' THEN BEGIN\n\t\t\tupdate_diff := (\n\t\t\t\tSELECT jsonb_object_agg(coalesce(n.key, o.key), n.value)\n\t\t\t\tFROM jsonb_each(old_row) o\n\t\t\t\t\t\t FULL OUTER JOIN\n\t\t\t\tjsonb_each(new_row) n ON n.key = o.key\n\t\t\t\tWHERE n.value IS DISTINCT FROM o.value\n\t\t\t);\n\t\t\tIF (SELECT count(*) FROM jsonb_object_keys(update_diff)) = 0 THEN\n\t\t\t\tRETURN NULL;\n\t\t\t\tEND IF;\n\t\t\tnew_event_type := 'update';\n\t\t\tnew_event_data := jsonb_build_object(\n\t\t\t 'tableName', TG_TABLE_NAME,\n\t\t\t 'rowId', primary_values,\n\t\t\t 'values', update_diff\n\t\t\t\t);\n\t\tEND;\n\t\tWHEN 'DELETE' THEN BEGIN\n\t\t\tnew_event_type := 'delete';\n\t\t\tnew_event_data := jsonb_build_object(\n\t\t\t 'tableName', TG_TABLE_NAME,\n\t\t\t 'rowId', primary_values\n\t\t\t\t);\n\t\tEND;\n\t\tELSE RAISE\n\t\t\tEXCEPTION 'Unknown TG_OP value %', TG_OP;\n\t\tEND CASE;\n\n\tSELECT \"id\", \"event_id\"\n\tFROM \"stage\"\n\tWHERE \"slug\" = right(TG_TABLE_SCHEMA, -length('stage_'))\n\t\tFOR NO KEY UPDATE\n\tINTO current_stage;\n\n\tINSERT INTO \"event\" (\"id\", \"type\", \"data\", \"previous_id\")\n\tVALUES (new_event_id, new_event_type, new_event_data, current_stage.event_id);\n\n\tUPDATE \"stage\"\n\tSET \"event_id\" = new_event_id\n\tWHERE \"id\" = current_stage.id;\n\n\tRETURN NULL;\nEND;\n\n$$ LANGUAGE plpgsql;\n`)\n\tbuilder.dropFunction(\n\t\t{\n\t\t\tname: 'make_diff',\n\t\t},\n\t\t[\n\t\t\t{ name: 'old', type: 'jsonb' },\n\t\t\t{ name: 'new', type: 'jsonb' },\n\t\t],\n\t)\n}\n"],"names":["escapeValue","getJunctionTables","schema"],"mappings":"
|
|
1
|
+
{"version":3,"file":"2020-05-06-150000-composed-primary.cjs","sources":["../../../../../packages/engine-system-api/src/migrations/2020-05-06-150000-composed-primary.ts"],"sourcesContent":["import { escapeValue, MigrationBuilder, Name } from '@contember/database-migrations'\nimport { SystemMigrationArgs } from './types'\nimport { getJunctionTables } from '../model'\nimport { MigrationArgs } from '@contember/database-migrations'\n\nconst createEventTrigger = (builder: MigrationBuilder, tableName: Name, primaryColumns: string[]) => {\n\tbuilder.createTrigger(tableName, 'log_event', {\n\t\twhen: 'AFTER',\n\t\toperation: ['INSERT', 'UPDATE', 'DELETE'],\n\t\tlevel: 'ROW',\n\t\tfunction: {\n\t\t\tschema: 'system',\n\t\t\tname: 'trigger_event',\n\t\t},\n\t\tfunctionParams: primaryColumns,\n\t})\n}\n\nconst migrateEvents = (builder: MigrationBuilder, tableName: string, primaryKeys: [string, string]) => {\n\tbuilder.sql(`\n\t\tWITH RECURSIVE\n\t\t\trecent_events(id, type, previous_id, data, created_at, stage) AS (\n\t\t\t\tSELECT event.id, type, previous_id, data, created_at, stage.slug\n\t\t\t\tFROM event\n\t\t\t\tJOIN stage ON stage.event_id = event.id\n\n\t\t\t\tUNION ALL\n\n\t\t\t\tSELECT event.id, event.type, event.previous_id, event.data, event.created_at, recent_events.stage\n\t\t\t\tFROM event, recent_events\n\t\t\t\tWHERE event.id = recent_events.previous_id\n\t\t\t),\n\t\t\taffected_events AS (\n\t\t\t\tSELECT\n\t\t\t\t\tdelete_event.id AS delete_id,\n\t\t\t\t\tcreate_event.id AS create_id,\n\t\t\t\t\tjson_build_array(\n\t\t\t\t\t\tcreate_event.data -> 'values' ->> ${escapeValue(primaryKeys[0])},\n\t\t\t\t\t\tcreate_event.data -> 'values' ->> ${escapeValue(primaryKeys[1])}\n\t\t\t\t\t) AS id\n\t\t\t\tFROM recent_events AS create_event\n\t\t\t\tLEFT JOIN recent_events AS delete_event\n\t\t\t\t\tON\n\t\t\t\t\t\tdelete_event.data ->> 'rowId' = create_event.data ->> 'rowId'\n\t\t\t\t\t\tAND delete_event.type = 'delete'\n\t\t\t\t\t\tAND delete_event.data ->> 'tableName' = create_event.data ->> 'tableName'\n\t\t\t\tWHERE create_event.type = 'create' AND create_event.data ->> 'tableName' = ${escapeValue(tableName)}\n\t\t\t)\n\t\tUPDATE event\n\t\tSET\n\t\t\tdata = event.data || jsonb_build_object('rowId', affected_events.id)\n\t\tFROM affected_events\n\t\tWHERE\n\t\t event.id = affected_events.create_id\n\t\t OR event.id = affected_events.delete_id\n\t\tRETURNING event.data\n`)\n}\n\nexport default async function (builder: MigrationBuilder, args: MigrationArgs<SystemMigrationArgs>) {\n\tconst schema = (await args.schemaResolver(args.connection)).schema\n\tconst tablesToMigrate = getJunctionTables(schema.model)\n\tconst schemas = args.project.stages.map(it => `stage_${it.slug}`)\n\tfor (const table of tablesToMigrate) {\n\t\tconst primaryColumns: [string, string] = [table.joiningColumn.columnName, table.inverseJoiningColumn.columnName]\n\t\tfor (const schema of schemas) {\n\t\t\tbuilder.dropColumn({ name: table.tableName, schema }, 'id')\n\t\t\tbuilder.dropConstraint(\n\t\t\t\t{ name: table.tableName, schema },\n\t\t\t\ttable.tableName + '_uniq_' + table.joiningColumn.columnName + '_' + table.inverseJoiningColumn.columnName,\n\t\t\t)\n\t\t\tbuilder.addConstraint({ name: table.tableName, schema }, null, {\n\t\t\t\tprimaryKey: [table.joiningColumn.columnName, table.inverseJoiningColumn.columnName],\n\t\t\t})\n\t\t\tbuilder.dropTrigger({ name: table.tableName, schema }, 'log_event')\n\t\t\tcreateEventTrigger(builder, { name: table.tableName, schema }, primaryColumns)\n\t\t}\n\t\tmigrateEvents(builder, table.tableName, primaryColumns)\n\t}\n\tfor (const entity of Object.values(schema.model.entities)) {\n\t\tfor (const schema of schemas) {\n\t\t\tbuilder.dropTrigger({ name: entity.tableName, schema }, 'log_event')\n\t\t\tcreateEventTrigger(builder, { name: entity.tableName, schema }, [entity.primaryColumn])\n\t\t}\n\t}\n\tbuilder.sql(`\n\t\tUPDATE event\n\t\tSET data = data || jsonb_build_object('rowId', json_build_array(data ->> 'rowId'))\n\t\tWHERE jsonb_typeof(data -> 'rowId') = 'string'\n\t`)\n\tbuilder.sql(`CREATE OR REPLACE FUNCTION \"trigger_event\"() RETURNS TRIGGER AS\n$$\n\nDECLARE\n\tnew_event_id UUID := uuid_generate_v4();\n\tDECLARE new_event_type TEXT;\n\tDECLARE new_event_data JSONB;\n\tDECLARE current_stage RECORD;\n\tDECLARE update_diff JSONB;\n\tDECLARE primary_values JSONB;\n\tDECLARE old_row JSONB;\n\tDECLARE new_row JSONB;\nBEGIN\n\told_row := CASE WHEN TG_OP = 'DELETE' OR TG_OP = 'UPDATE' THEN to_jsonb(old) ELSE NULL END;\n new_row := CASE WHEN TG_OP = 'INSERT' OR TG_OP = 'UPDATE' THEN to_jsonb(new) ELSE NULL END;\n\tprimary_values = (\n\t\tSELECT jsonb_agg(value ORDER BY array_position(TG_ARGV, key))\n\t\tFROM jsonb_each(COALESCE(old_row, new_row))\n\t\tWHERE key = ANY (TG_ARGV)\n\t);\n\n\tCASE TG_OP\n\t\tWHEN 'INSERT' THEN BEGIN\n\t\t\tnew_event_type := 'create';\n\t\t\tnew_event_data := jsonb_build_object(\n\t\t\t 'tableName', TG_TABLE_NAME,\n\t\t\t 'rowId', primary_values,\n\t\t\t 'values', COALESCE((\n\t\t\t\t SELECT jsonb_object_agg(key, value)\n\t\t\t\t FROM jsonb_each(new_row)\n\t\t\t\t WHERE NOT (key = ANY (TG_ARGV))\n\t\t\t ), '{}'::JSONB)\n\t\t\t\t);\n\t\tEND;\n\t\tWHEN 'UPDATE' THEN BEGIN\n\t\t\tupdate_diff := (\n\t\t\t\tSELECT jsonb_object_agg(coalesce(n.key, o.key), n.value)\n\t\t\t\tFROM jsonb_each(old_row) o\n\t\t\t\t\t\t FULL OUTER JOIN\n\t\t\t\tjsonb_each(new_row) n ON n.key = o.key\n\t\t\t\tWHERE n.value IS DISTINCT FROM o.value\n\t\t\t);\n\t\t\tIF (SELECT count(*) FROM jsonb_object_keys(update_diff)) = 0 THEN\n\t\t\t\tRETURN NULL;\n\t\t\t\tEND IF;\n\t\t\tnew_event_type := 'update';\n\t\t\tnew_event_data := jsonb_build_object(\n\t\t\t 'tableName', TG_TABLE_NAME,\n\t\t\t 'rowId', primary_values,\n\t\t\t 'values', update_diff\n\t\t\t\t);\n\t\tEND;\n\t\tWHEN 'DELETE' THEN BEGIN\n\t\t\tnew_event_type := 'delete';\n\t\t\tnew_event_data := jsonb_build_object(\n\t\t\t 'tableName', TG_TABLE_NAME,\n\t\t\t 'rowId', primary_values\n\t\t\t\t);\n\t\tEND;\n\t\tELSE RAISE\n\t\t\tEXCEPTION 'Unknown TG_OP value %', TG_OP;\n\t\tEND CASE;\n\n\tSELECT \"id\", \"event_id\"\n\tFROM \"stage\"\n\tWHERE \"slug\" = right(TG_TABLE_SCHEMA, -length('stage_'))\n\t\tFOR NO KEY UPDATE\n\tINTO current_stage;\n\n\tINSERT INTO \"event\" (\"id\", \"type\", \"data\", \"previous_id\")\n\tVALUES (new_event_id, new_event_type, new_event_data, current_stage.event_id);\n\n\tUPDATE \"stage\"\n\tSET \"event_id\" = new_event_id\n\tWHERE \"id\" = current_stage.id;\n\n\tRETURN NULL;\nEND;\n\n$$ LANGUAGE plpgsql;\n`)\n\tbuilder.dropFunction(\n\t\t{\n\t\t\tname: 'make_diff',\n\t\t},\n\t\t[\n\t\t\t{ name: 'old', type: 'jsonb' },\n\t\t\t{ name: 'new', type: 'jsonb' },\n\t\t],\n\t)\n}\n"],"names":["escapeValue","getJunctionTables","schema"],"mappings":";;;;;;;;;;;;AAKA,MAAM,qBAAqB,CAAC,SAA2B,WAAiB,mBAA6B;AAC5F,UAAA,cAAc,WAAW,aAAa;AAAA,IAC7C,MAAM;AAAA,IACN,WAAW,CAAC,UAAU,UAAU,QAAQ;AAAA,IACxC,OAAO;AAAA,IACP,UAAU;AAAA,MACT,QAAQ;AAAA,MACR,MAAM;AAAA,IACP;AAAA,IACA,gBAAgB;AAAA,EAAA,CAChB;AACF;AAEA,MAAM,gBAAgB,CAAC,SAA2B,WAAmB,gBAAkC;AACtG,UAAQ,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0CAkB6BA,+BAAY,YAAY,CAAC,CAAC,CAAC;AAAA,0CAC3BA,+BAAY,YAAY,CAAC,CAAC,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iFAQYA,mBAAAA,YAAY,SAAS,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAUtG;AACD;AAEA,eAAA,+BAA+B,SAA2B,MAA0C;AACnG,QAAM,UAAU,MAAM,KAAK,eAAe,KAAK,UAAU,GAAG;AACtD,QAAA,kBAAkBC,aAAAA,kBAAkB,OAAO,KAAK;AAChD,QAAA,UAAU,KAAK,QAAQ,OAAO,IAAI,CAAM,OAAA,SAAS,GAAG,IAAI,EAAE;AAChE,aAAW,SAAS,iBAAiB;AACpC,UAAM,iBAAmC,CAAC,MAAM,cAAc,YAAY,MAAM,qBAAqB,UAAU;AAC/G,eAAWC,WAAU,SAAS;AACrB,cAAA,WAAW,EAAE,MAAM,MAAM,WAAW,QAAAA,WAAU,IAAI;AAClD,cAAA;AAAA,QACP,EAAE,MAAM,MAAM,WAAW,QAAAA,QAAO;AAAA,QAChC,MAAM,YAAY,WAAW,MAAM,cAAc,aAAa,MAAM,MAAM,qBAAqB;AAAA,MAAA;AAExF,cAAA,cAAc,EAAE,MAAM,MAAM,WAAW,QAAAA,WAAU,MAAM;AAAA,QAC9D,YAAY,CAAC,MAAM,cAAc,YAAY,MAAM,qBAAqB,UAAU;AAAA,MAAA,CAClF;AACO,cAAA,YAAY,EAAE,MAAM,MAAM,WAAW,QAAAA,WAAU,WAAW;AAC/C,yBAAA,SAAS,EAAE,MAAM,MAAM,WAAW,QAAAA,WAAU,cAAc;AAAA,IAC9E;AACc,kBAAA,SAAS,MAAM,WAAW,cAAc;AAAA,EACvD;AACA,aAAW,UAAU,OAAO,OAAO,OAAO,MAAM,QAAQ,GAAG;AAC1D,eAAWA,WAAU,SAAS;AACrB,cAAA,YAAY,EAAE,MAAM,OAAO,WAAW,QAAAA,WAAU,WAAW;AAChD,yBAAA,SAAS,EAAE,MAAM,OAAO,WAAW,QAAAA,WAAU,CAAC,OAAO,aAAa,CAAC;AAAA,IACvF;AAAA,EACD;AACA,UAAQ,IAAI;AAAA;AAAA;AAAA;AAAA,EAIX;AACD,UAAQ,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAgFZ;AACQ,UAAA;AAAA,IACP;AAAA,MACC,MAAM;AAAA,IACP;AAAA,IACA;AAAA,MACC,EAAE,MAAM,OAAO,MAAM,QAAQ;AAAA,MAC7B,EAAE,MAAM,OAAO,MAAM,QAAQ;AAAA,IAC9B;AAAA,EAAA;AAEF;;"}
|
|
@@ -9,7 +9,6 @@ import "../schema/dev.graphql.js";
|
|
|
9
9
|
import "../schema/system.graphql.js";
|
|
10
10
|
import "@contember/schema-utils";
|
|
11
11
|
import "@contember/logger";
|
|
12
|
-
import "../model/migrations/SchemaVersionBuilder.js";
|
|
13
12
|
const createEventTrigger = (builder, tableName, primaryColumns) => {
|
|
14
13
|
builder.createTrigger(tableName, "log_event", {
|
|
15
14
|
when: "AFTER",
|
|
@@ -63,7 +62,7 @@ const migrateEvents = (builder, tableName, primaryKeys) => {
|
|
|
63
62
|
`);
|
|
64
63
|
};
|
|
65
64
|
async function _20200506150000composedprimary(builder, args) {
|
|
66
|
-
const schema = await args.schemaResolver(args.connection);
|
|
65
|
+
const schema = (await args.schemaResolver(args.connection)).schema;
|
|
67
66
|
const tablesToMigrate = getJunctionTables(schema.model);
|
|
68
67
|
const schemas = args.project.stages.map((it) => `stage_${it.slug}`);
|
|
69
68
|
for (const table of tablesToMigrate) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"2020-05-06-150000-composed-primary.js","sources":["../../../../../packages/engine-system-api/src/migrations/2020-05-06-150000-composed-primary.ts"],"sourcesContent":["import { escapeValue, MigrationBuilder, Name } from '@contember/database-migrations'\nimport { SystemMigrationArgs } from './types'\nimport { getJunctionTables } from '../model'\nimport { MigrationArgs } from '@contember/database-migrations'\n\nconst createEventTrigger = (builder: MigrationBuilder, tableName: Name, primaryColumns: string[]) => {\n\tbuilder.createTrigger(tableName, 'log_event', {\n\t\twhen: 'AFTER',\n\t\toperation: ['INSERT', 'UPDATE', 'DELETE'],\n\t\tlevel: 'ROW',\n\t\tfunction: {\n\t\t\tschema: 'system',\n\t\t\tname: 'trigger_event',\n\t\t},\n\t\tfunctionParams: primaryColumns,\n\t})\n}\n\nconst migrateEvents = (builder: MigrationBuilder, tableName: string, primaryKeys: [string, string]) => {\n\tbuilder.sql(`\n\t\tWITH RECURSIVE\n\t\t\trecent_events(id, type, previous_id, data, created_at, stage) AS (\n\t\t\t\tSELECT event.id, type, previous_id, data, created_at, stage.slug\n\t\t\t\tFROM event\n\t\t\t\tJOIN stage ON stage.event_id = event.id\n\n\t\t\t\tUNION ALL\n\n\t\t\t\tSELECT event.id, event.type, event.previous_id, event.data, event.created_at, recent_events.stage\n\t\t\t\tFROM event, recent_events\n\t\t\t\tWHERE event.id = recent_events.previous_id\n\t\t\t),\n\t\t\taffected_events AS (\n\t\t\t\tSELECT\n\t\t\t\t\tdelete_event.id AS delete_id,\n\t\t\t\t\tcreate_event.id AS create_id,\n\t\t\t\t\tjson_build_array(\n\t\t\t\t\t\tcreate_event.data -> 'values' ->> ${escapeValue(primaryKeys[0])},\n\t\t\t\t\t\tcreate_event.data -> 'values' ->> ${escapeValue(primaryKeys[1])}\n\t\t\t\t\t) AS id\n\t\t\t\tFROM recent_events AS create_event\n\t\t\t\tLEFT JOIN recent_events AS delete_event\n\t\t\t\t\tON\n\t\t\t\t\t\tdelete_event.data ->> 'rowId' = create_event.data ->> 'rowId'\n\t\t\t\t\t\tAND delete_event.type = 'delete'\n\t\t\t\t\t\tAND delete_event.data ->> 'tableName' = create_event.data ->> 'tableName'\n\t\t\t\tWHERE create_event.type = 'create' AND create_event.data ->> 'tableName' = ${escapeValue(tableName)}\n\t\t\t)\n\t\tUPDATE event\n\t\tSET\n\t\t\tdata = event.data || jsonb_build_object('rowId', affected_events.id)\n\t\tFROM affected_events\n\t\tWHERE\n\t\t event.id = affected_events.create_id\n\t\t OR event.id = affected_events.delete_id\n\t\tRETURNING event.data\n`)\n}\n\nexport default async function (builder: MigrationBuilder, args: MigrationArgs<SystemMigrationArgs>) {\n\tconst schema = await args.schemaResolver(args.connection)\n\tconst tablesToMigrate = getJunctionTables(schema.model)\n\tconst schemas = args.project.stages.map(it => `stage_${it.slug}`)\n\tfor (const table of tablesToMigrate) {\n\t\tconst primaryColumns: [string, string] = [table.joiningColumn.columnName, table.inverseJoiningColumn.columnName]\n\t\tfor (const schema of schemas) {\n\t\t\tbuilder.dropColumn({ name: table.tableName, schema }, 'id')\n\t\t\tbuilder.dropConstraint(\n\t\t\t\t{ name: table.tableName, schema },\n\t\t\t\ttable.tableName + '_uniq_' + table.joiningColumn.columnName + '_' + table.inverseJoiningColumn.columnName,\n\t\t\t)\n\t\t\tbuilder.addConstraint({ name: table.tableName, schema }, null, {\n\t\t\t\tprimaryKey: [table.joiningColumn.columnName, table.inverseJoiningColumn.columnName],\n\t\t\t})\n\t\t\tbuilder.dropTrigger({ name: table.tableName, schema }, 'log_event')\n\t\t\tcreateEventTrigger(builder, { name: table.tableName, schema }, primaryColumns)\n\t\t}\n\t\tmigrateEvents(builder, table.tableName, primaryColumns)\n\t}\n\tfor (const entity of Object.values(schema.model.entities)) {\n\t\tfor (const schema of schemas) {\n\t\t\tbuilder.dropTrigger({ name: entity.tableName, schema }, 'log_event')\n\t\t\tcreateEventTrigger(builder, { name: entity.tableName, schema }, [entity.primaryColumn])\n\t\t}\n\t}\n\tbuilder.sql(`\n\t\tUPDATE event\n\t\tSET data = data || jsonb_build_object('rowId', json_build_array(data ->> 'rowId'))\n\t\tWHERE jsonb_typeof(data -> 'rowId') = 'string'\n\t`)\n\tbuilder.sql(`CREATE OR REPLACE FUNCTION \"trigger_event\"() RETURNS TRIGGER AS\n$$\n\nDECLARE\n\tnew_event_id UUID := uuid_generate_v4();\n\tDECLARE new_event_type TEXT;\n\tDECLARE new_event_data JSONB;\n\tDECLARE current_stage RECORD;\n\tDECLARE update_diff JSONB;\n\tDECLARE primary_values JSONB;\n\tDECLARE old_row JSONB;\n\tDECLARE new_row JSONB;\nBEGIN\n\told_row := CASE WHEN TG_OP = 'DELETE' OR TG_OP = 'UPDATE' THEN to_jsonb(old) ELSE NULL END;\n new_row := CASE WHEN TG_OP = 'INSERT' OR TG_OP = 'UPDATE' THEN to_jsonb(new) ELSE NULL END;\n\tprimary_values = (\n\t\tSELECT jsonb_agg(value ORDER BY array_position(TG_ARGV, key))\n\t\tFROM jsonb_each(COALESCE(old_row, new_row))\n\t\tWHERE key = ANY (TG_ARGV)\n\t);\n\n\tCASE TG_OP\n\t\tWHEN 'INSERT' THEN BEGIN\n\t\t\tnew_event_type := 'create';\n\t\t\tnew_event_data := jsonb_build_object(\n\t\t\t 'tableName', TG_TABLE_NAME,\n\t\t\t 'rowId', primary_values,\n\t\t\t 'values', COALESCE((\n\t\t\t\t SELECT jsonb_object_agg(key, value)\n\t\t\t\t FROM jsonb_each(new_row)\n\t\t\t\t WHERE NOT (key = ANY (TG_ARGV))\n\t\t\t ), '{}'::JSONB)\n\t\t\t\t);\n\t\tEND;\n\t\tWHEN 'UPDATE' THEN BEGIN\n\t\t\tupdate_diff := (\n\t\t\t\tSELECT jsonb_object_agg(coalesce(n.key, o.key), n.value)\n\t\t\t\tFROM jsonb_each(old_row) o\n\t\t\t\t\t\t FULL OUTER JOIN\n\t\t\t\tjsonb_each(new_row) n ON n.key = o.key\n\t\t\t\tWHERE n.value IS DISTINCT FROM o.value\n\t\t\t);\n\t\t\tIF (SELECT count(*) FROM jsonb_object_keys(update_diff)) = 0 THEN\n\t\t\t\tRETURN NULL;\n\t\t\t\tEND IF;\n\t\t\tnew_event_type := 'update';\n\t\t\tnew_event_data := jsonb_build_object(\n\t\t\t 'tableName', TG_TABLE_NAME,\n\t\t\t 'rowId', primary_values,\n\t\t\t 'values', update_diff\n\t\t\t\t);\n\t\tEND;\n\t\tWHEN 'DELETE' THEN BEGIN\n\t\t\tnew_event_type := 'delete';\n\t\t\tnew_event_data := jsonb_build_object(\n\t\t\t 'tableName', TG_TABLE_NAME,\n\t\t\t 'rowId', primary_values\n\t\t\t\t);\n\t\tEND;\n\t\tELSE RAISE\n\t\t\tEXCEPTION 'Unknown TG_OP value %', TG_OP;\n\t\tEND CASE;\n\n\tSELECT \"id\", \"event_id\"\n\tFROM \"stage\"\n\tWHERE \"slug\" = right(TG_TABLE_SCHEMA, -length('stage_'))\n\t\tFOR NO KEY UPDATE\n\tINTO current_stage;\n\n\tINSERT INTO \"event\" (\"id\", \"type\", \"data\", \"previous_id\")\n\tVALUES (new_event_id, new_event_type, new_event_data, current_stage.event_id);\n\n\tUPDATE \"stage\"\n\tSET \"event_id\" = new_event_id\n\tWHERE \"id\" = current_stage.id;\n\n\tRETURN NULL;\nEND;\n\n$$ LANGUAGE plpgsql;\n`)\n\tbuilder.dropFunction(\n\t\t{\n\t\t\tname: 'make_diff',\n\t\t},\n\t\t[\n\t\t\t{ name: 'old', type: 'jsonb' },\n\t\t\t{ name: 'new', type: 'jsonb' },\n\t\t],\n\t)\n}\n"],"names":["schema"],"mappings":"
|
|
1
|
+
{"version":3,"file":"2020-05-06-150000-composed-primary.js","sources":["../../../../../packages/engine-system-api/src/migrations/2020-05-06-150000-composed-primary.ts"],"sourcesContent":["import { escapeValue, MigrationBuilder, Name } from '@contember/database-migrations'\nimport { SystemMigrationArgs } from './types'\nimport { getJunctionTables } from '../model'\nimport { MigrationArgs } from '@contember/database-migrations'\n\nconst createEventTrigger = (builder: MigrationBuilder, tableName: Name, primaryColumns: string[]) => {\n\tbuilder.createTrigger(tableName, 'log_event', {\n\t\twhen: 'AFTER',\n\t\toperation: ['INSERT', 'UPDATE', 'DELETE'],\n\t\tlevel: 'ROW',\n\t\tfunction: {\n\t\t\tschema: 'system',\n\t\t\tname: 'trigger_event',\n\t\t},\n\t\tfunctionParams: primaryColumns,\n\t})\n}\n\nconst migrateEvents = (builder: MigrationBuilder, tableName: string, primaryKeys: [string, string]) => {\n\tbuilder.sql(`\n\t\tWITH RECURSIVE\n\t\t\trecent_events(id, type, previous_id, data, created_at, stage) AS (\n\t\t\t\tSELECT event.id, type, previous_id, data, created_at, stage.slug\n\t\t\t\tFROM event\n\t\t\t\tJOIN stage ON stage.event_id = event.id\n\n\t\t\t\tUNION ALL\n\n\t\t\t\tSELECT event.id, event.type, event.previous_id, event.data, event.created_at, recent_events.stage\n\t\t\t\tFROM event, recent_events\n\t\t\t\tWHERE event.id = recent_events.previous_id\n\t\t\t),\n\t\t\taffected_events AS (\n\t\t\t\tSELECT\n\t\t\t\t\tdelete_event.id AS delete_id,\n\t\t\t\t\tcreate_event.id AS create_id,\n\t\t\t\t\tjson_build_array(\n\t\t\t\t\t\tcreate_event.data -> 'values' ->> ${escapeValue(primaryKeys[0])},\n\t\t\t\t\t\tcreate_event.data -> 'values' ->> ${escapeValue(primaryKeys[1])}\n\t\t\t\t\t) AS id\n\t\t\t\tFROM recent_events AS create_event\n\t\t\t\tLEFT JOIN recent_events AS delete_event\n\t\t\t\t\tON\n\t\t\t\t\t\tdelete_event.data ->> 'rowId' = create_event.data ->> 'rowId'\n\t\t\t\t\t\tAND delete_event.type = 'delete'\n\t\t\t\t\t\tAND delete_event.data ->> 'tableName' = create_event.data ->> 'tableName'\n\t\t\t\tWHERE create_event.type = 'create' AND create_event.data ->> 'tableName' = ${escapeValue(tableName)}\n\t\t\t)\n\t\tUPDATE event\n\t\tSET\n\t\t\tdata = event.data || jsonb_build_object('rowId', affected_events.id)\n\t\tFROM affected_events\n\t\tWHERE\n\t\t event.id = affected_events.create_id\n\t\t OR event.id = affected_events.delete_id\n\t\tRETURNING event.data\n`)\n}\n\nexport default async function (builder: MigrationBuilder, args: MigrationArgs<SystemMigrationArgs>) {\n\tconst schema = (await args.schemaResolver(args.connection)).schema\n\tconst tablesToMigrate = getJunctionTables(schema.model)\n\tconst schemas = args.project.stages.map(it => `stage_${it.slug}`)\n\tfor (const table of tablesToMigrate) {\n\t\tconst primaryColumns: [string, string] = [table.joiningColumn.columnName, table.inverseJoiningColumn.columnName]\n\t\tfor (const schema of schemas) {\n\t\t\tbuilder.dropColumn({ name: table.tableName, schema }, 'id')\n\t\t\tbuilder.dropConstraint(\n\t\t\t\t{ name: table.tableName, schema },\n\t\t\t\ttable.tableName + '_uniq_' + table.joiningColumn.columnName + '_' + table.inverseJoiningColumn.columnName,\n\t\t\t)\n\t\t\tbuilder.addConstraint({ name: table.tableName, schema }, null, {\n\t\t\t\tprimaryKey: [table.joiningColumn.columnName, table.inverseJoiningColumn.columnName],\n\t\t\t})\n\t\t\tbuilder.dropTrigger({ name: table.tableName, schema }, 'log_event')\n\t\t\tcreateEventTrigger(builder, { name: table.tableName, schema }, primaryColumns)\n\t\t}\n\t\tmigrateEvents(builder, table.tableName, primaryColumns)\n\t}\n\tfor (const entity of Object.values(schema.model.entities)) {\n\t\tfor (const schema of schemas) {\n\t\t\tbuilder.dropTrigger({ name: entity.tableName, schema }, 'log_event')\n\t\t\tcreateEventTrigger(builder, { name: entity.tableName, schema }, [entity.primaryColumn])\n\t\t}\n\t}\n\tbuilder.sql(`\n\t\tUPDATE event\n\t\tSET data = data || jsonb_build_object('rowId', json_build_array(data ->> 'rowId'))\n\t\tWHERE jsonb_typeof(data -> 'rowId') = 'string'\n\t`)\n\tbuilder.sql(`CREATE OR REPLACE FUNCTION \"trigger_event\"() RETURNS TRIGGER AS\n$$\n\nDECLARE\n\tnew_event_id UUID := uuid_generate_v4();\n\tDECLARE new_event_type TEXT;\n\tDECLARE new_event_data JSONB;\n\tDECLARE current_stage RECORD;\n\tDECLARE update_diff JSONB;\n\tDECLARE primary_values JSONB;\n\tDECLARE old_row JSONB;\n\tDECLARE new_row JSONB;\nBEGIN\n\told_row := CASE WHEN TG_OP = 'DELETE' OR TG_OP = 'UPDATE' THEN to_jsonb(old) ELSE NULL END;\n new_row := CASE WHEN TG_OP = 'INSERT' OR TG_OP = 'UPDATE' THEN to_jsonb(new) ELSE NULL END;\n\tprimary_values = (\n\t\tSELECT jsonb_agg(value ORDER BY array_position(TG_ARGV, key))\n\t\tFROM jsonb_each(COALESCE(old_row, new_row))\n\t\tWHERE key = ANY (TG_ARGV)\n\t);\n\n\tCASE TG_OP\n\t\tWHEN 'INSERT' THEN BEGIN\n\t\t\tnew_event_type := 'create';\n\t\t\tnew_event_data := jsonb_build_object(\n\t\t\t 'tableName', TG_TABLE_NAME,\n\t\t\t 'rowId', primary_values,\n\t\t\t 'values', COALESCE((\n\t\t\t\t SELECT jsonb_object_agg(key, value)\n\t\t\t\t FROM jsonb_each(new_row)\n\t\t\t\t WHERE NOT (key = ANY (TG_ARGV))\n\t\t\t ), '{}'::JSONB)\n\t\t\t\t);\n\t\tEND;\n\t\tWHEN 'UPDATE' THEN BEGIN\n\t\t\tupdate_diff := (\n\t\t\t\tSELECT jsonb_object_agg(coalesce(n.key, o.key), n.value)\n\t\t\t\tFROM jsonb_each(old_row) o\n\t\t\t\t\t\t FULL OUTER JOIN\n\t\t\t\tjsonb_each(new_row) n ON n.key = o.key\n\t\t\t\tWHERE n.value IS DISTINCT FROM o.value\n\t\t\t);\n\t\t\tIF (SELECT count(*) FROM jsonb_object_keys(update_diff)) = 0 THEN\n\t\t\t\tRETURN NULL;\n\t\t\t\tEND IF;\n\t\t\tnew_event_type := 'update';\n\t\t\tnew_event_data := jsonb_build_object(\n\t\t\t 'tableName', TG_TABLE_NAME,\n\t\t\t 'rowId', primary_values,\n\t\t\t 'values', update_diff\n\t\t\t\t);\n\t\tEND;\n\t\tWHEN 'DELETE' THEN BEGIN\n\t\t\tnew_event_type := 'delete';\n\t\t\tnew_event_data := jsonb_build_object(\n\t\t\t 'tableName', TG_TABLE_NAME,\n\t\t\t 'rowId', primary_values\n\t\t\t\t);\n\t\tEND;\n\t\tELSE RAISE\n\t\t\tEXCEPTION 'Unknown TG_OP value %', TG_OP;\n\t\tEND CASE;\n\n\tSELECT \"id\", \"event_id\"\n\tFROM \"stage\"\n\tWHERE \"slug\" = right(TG_TABLE_SCHEMA, -length('stage_'))\n\t\tFOR NO KEY UPDATE\n\tINTO current_stage;\n\n\tINSERT INTO \"event\" (\"id\", \"type\", \"data\", \"previous_id\")\n\tVALUES (new_event_id, new_event_type, new_event_data, current_stage.event_id);\n\n\tUPDATE \"stage\"\n\tSET \"event_id\" = new_event_id\n\tWHERE \"id\" = current_stage.id;\n\n\tRETURN NULL;\nEND;\n\n$$ LANGUAGE plpgsql;\n`)\n\tbuilder.dropFunction(\n\t\t{\n\t\t\tname: 'make_diff',\n\t\t},\n\t\t[\n\t\t\t{ name: 'old', type: 'jsonb' },\n\t\t\t{ name: 'new', type: 'jsonb' },\n\t\t],\n\t)\n}\n"],"names":["schema"],"mappings":";;;;;;;;;;;AAKA,MAAM,qBAAqB,CAAC,SAA2B,WAAiB,mBAA6B;AAC5F,UAAA,cAAc,WAAW,aAAa;AAAA,IAC7C,MAAM;AAAA,IACN,WAAW,CAAC,UAAU,UAAU,QAAQ;AAAA,IACxC,OAAO;AAAA,IACP,UAAU;AAAA,MACT,QAAQ;AAAA,MACR,MAAM;AAAA,IACP;AAAA,IACA,gBAAgB;AAAA,EAAA,CAChB;AACF;AAEA,MAAM,gBAAgB,CAAC,SAA2B,WAAmB,gBAAkC;AACtG,UAAQ,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0CAkB6B,YAAY,YAAY,CAAC,CAAC,CAAC;AAAA,0CAC3B,YAAY,YAAY,CAAC,CAAC,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iFAQY,YAAY,SAAS,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAUtG;AACD;AAEA,eAAA,+BAA+B,SAA2B,MAA0C;AACnG,QAAM,UAAU,MAAM,KAAK,eAAe,KAAK,UAAU,GAAG;AACtD,QAAA,kBAAkB,kBAAkB,OAAO,KAAK;AAChD,QAAA,UAAU,KAAK,QAAQ,OAAO,IAAI,CAAM,OAAA,SAAS,GAAG,IAAI,EAAE;AAChE,aAAW,SAAS,iBAAiB;AACpC,UAAM,iBAAmC,CAAC,MAAM,cAAc,YAAY,MAAM,qBAAqB,UAAU;AAC/G,eAAWA,WAAU,SAAS;AACrB,cAAA,WAAW,EAAE,MAAM,MAAM,WAAW,QAAAA,WAAU,IAAI;AAClD,cAAA;AAAA,QACP,EAAE,MAAM,MAAM,WAAW,QAAAA,QAAO;AAAA,QAChC,MAAM,YAAY,WAAW,MAAM,cAAc,aAAa,MAAM,MAAM,qBAAqB;AAAA,MAAA;AAExF,cAAA,cAAc,EAAE,MAAM,MAAM,WAAW,QAAAA,WAAU,MAAM;AAAA,QAC9D,YAAY,CAAC,MAAM,cAAc,YAAY,MAAM,qBAAqB,UAAU;AAAA,MAAA,CAClF;AACO,cAAA,YAAY,EAAE,MAAM,MAAM,WAAW,QAAAA,WAAU,WAAW;AAC/C,yBAAA,SAAS,EAAE,MAAM,MAAM,WAAW,QAAAA,WAAU,cAAc;AAAA,IAC9E;AACc,kBAAA,SAAS,MAAM,WAAW,cAAc;AAAA,EACvD;AACA,aAAW,UAAU,OAAO,OAAO,OAAO,MAAM,QAAQ,GAAG;AAC1D,eAAWA,WAAU,SAAS;AACrB,cAAA,YAAY,EAAE,MAAM,OAAO,WAAW,QAAAA,WAAU,WAAW;AAChD,yBAAA,SAAS,EAAE,MAAM,OAAO,WAAW,QAAAA,WAAU,CAAC,OAAO,aAAa,CAAC;AAAA,IACvF;AAAA,EACD;AACA,UAAQ,IAAI;AAAA;AAAA;AAAA;AAAA,EAIX;AACD,UAAQ,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAgFZ;AACQ,UAAA;AAAA,IACP;AAAA,MACC,MAAM;AAAA,IACP;AAAA,IACA;AAAA,MACC,EAAE,MAAM,OAAO,MAAM,QAAQ;AAAA,MAC7B,EAAE,MAAM,OAAO,MAAM,QAAQ;AAAA,IAC9B;AAAA,EAAA;AAEF;"}
|
|
@@ -9,7 +9,6 @@ require("../schema/dev.graphql.cjs");
|
|
|
9
9
|
require("../schema/system.graphql.cjs");
|
|
10
10
|
require("@contember/schema-utils");
|
|
11
11
|
require("@contember/logger");
|
|
12
|
-
require("../model/migrations/SchemaVersionBuilder.cjs");
|
|
13
12
|
const createEventStatementTrigger = (builder, tableName) => {
|
|
14
13
|
builder.createTrigger(tableName, "log_event_statement", {
|
|
15
14
|
when: "AFTER",
|
|
@@ -22,7 +21,7 @@ const createEventStatementTrigger = (builder, tableName) => {
|
|
|
22
21
|
});
|
|
23
22
|
};
|
|
24
23
|
async function _20200601103000eventtriggerperf(builder, args) {
|
|
25
|
-
const schema = await args.schemaResolver(args.connection);
|
|
24
|
+
const schema = (await args.schemaResolver(args.connection)).schema;
|
|
26
25
|
const junctionTables = modelHelpers.getJunctionTables(schema.model);
|
|
27
26
|
const schemas = args.project.stages.map((it) => `stage_${it.slug}`);
|
|
28
27
|
builder.sql(`CREATE OR REPLACE FUNCTION "trigger_event"() RETURNS TRIGGER AS $$
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"2020-06-01-103000-event-trigger-perf.cjs","sources":["../../../../../packages/engine-system-api/src/migrations/2020-06-01-103000-event-trigger-perf.ts"],"sourcesContent":["import { MigrationBuilder, Name } from '@contember/database-migrations'\nimport { SystemMigrationArgs } from './types'\nimport { getJunctionTables } from '../model'\nimport { MigrationArgs } from '@contember/database-migrations'\n\nconst createEventStatementTrigger = (builder: MigrationBuilder, tableName: Name) => {\n\tbuilder.createTrigger(tableName, 'log_event_statement', {\n\t\twhen: 'AFTER',\n\t\toperation: ['INSERT', 'UPDATE', 'DELETE'],\n\t\tlevel: 'STATEMENT',\n\t\tfunction: {\n\t\t\tschema: 'system',\n\t\t\tname: 'statement_trigger_event',\n\t\t},\n\t})\n}\n\nexport default async function (builder: MigrationBuilder, args: MigrationArgs<SystemMigrationArgs>) {\n\tconst schema = await args.schemaResolver(args.connection)\n\tconst junctionTables = getJunctionTables(schema.model)\n\tconst schemas = args.project.stages.map(it => `stage_${it.slug}`)\n\tbuilder.sql(`CREATE OR REPLACE FUNCTION \"trigger_event\"() RETURNS TRIGGER AS $$\nDECLARE\n DECLARE new_event_type TEXT;\n DECLARE previous_id UUID;\n DECLARE new_event_data JSONB;\n DECLARE update_diff JSONB;\n DECLARE primary_values JSONB;\n DECLARE old_row JSONB;\n DECLARE new_row JSONB;\nBEGIN\n old_row := CASE WHEN TG_OP = 'DELETE' OR TG_OP = 'UPDATE' THEN to_jsonb(old) ELSE NULL END;\n new_row := CASE WHEN TG_OP = 'INSERT' OR TG_OP = 'UPDATE' THEN to_jsonb(new) ELSE NULL END;\n primary_values := (\n SELECT jsonb_agg(value ORDER BY array_position(TG_ARGV, key))\n FROM jsonb_each(COALESCE(old_row, new_row))\n WHERE key = ANY (TG_ARGV)\n );\n\n\n CASE TG_OP\n WHEN 'INSERT' THEN BEGIN\n new_event_type := 'create';\n new_event_data := jsonb_build_object(\n 'tableName', TG_TABLE_NAME,\n 'rowId', primary_values,\n 'values', COALESCE((\n SELECT jsonb_object_agg(key, value)\n FROM jsonb_each(new_row)\n WHERE NOT (key = ANY (TG_ARGV))\n ), '{}'::JSONB)\n );\n END;\n WHEN 'UPDATE' THEN BEGIN\n update_diff := (\n SELECT jsonb_object_agg(coalesce(n.key, o.key), n.value)\n FROM jsonb_each(old_row) o\n FULL OUTER JOIN\n jsonb_each(new_row) n ON n.key = o.key\n WHERE n.value IS DISTINCT FROM o.value\n );\n IF (SELECT count(*) FROM jsonb_object_keys(update_diff)) = 0 THEN\n RETURN NULL;\n END IF;\n new_event_type := 'update';\n new_event_data := jsonb_build_object(\n 'tableName', TG_TABLE_NAME,\n 'rowId', primary_values,\n 'values', update_diff\n );\n END;\n WHEN 'DELETE' THEN BEGIN\n new_event_type := 'delete';\n new_event_data := jsonb_build_object(\n 'tableName', TG_TABLE_NAME,\n 'rowId', primary_values\n );\n END;\n ELSE RAISE\n EXCEPTION 'Unknown TG_OP value %', TG_OP;\n END CASE;\n CASE WHEN NULLIF(current_setting('system.current_stage_id' || TG_TABLE_SCHEMA, TRUE), '') IS NULL THEN\n PERFORM set_config('system.current_stage_id' || TG_TABLE_SCHEMA, \"id\"::TEXT, TRUE), set_config('system.current_stage_event' || TG_TABLE_SCHEMA, \"event_id\"::TEXT, TRUE)\n FROM \"stage\"\n WHERE \"slug\" = right(TG_TABLE_SCHEMA, -length('stage_'))\n FOR NO KEY UPDATE;\n ELSE\n -- do nothing\n END CASE;\n previous_id := current_setting('system.current_stage_event' || TG_TABLE_SCHEMA)::UUID;\n INSERT INTO \"event\" (\"id\", \"type\", \"data\", \"previous_id\")\n VALUES (set_config('system.current_stage_event' || TG_TABLE_SCHEMA, system.uuid_generate_v4()::TEXT, TRUE)::UUID, new_event_type, new_event_data, previous_id);\n\n RETURN NULL;\nEND;\n\n$$ LANGUAGE plpgsql`)\n\tbuilder.sql(`CREATE OR REPLACE FUNCTION \"statement_trigger_event\"() RETURNS TRIGGER AS\n$$\nBEGIN\n CASE\n WHEN NULLIF(current_setting('system.current_stage_id' || TG_TABLE_SCHEMA, TRUE), '') IS NOT NULL THEN\n UPDATE stage SET event_id = current_setting('system.current_stage_event' || TG_TABLE_SCHEMA)::UUID WHERE id = current_setting('system.current_stage_id' || TG_TABLE_SCHEMA)::UUID;\n ELSE\n -- do nothing\n END CASE;\n RETURN NULL;\nEND;\n$$\n LANGUAGE plpgsql`)\n\tfor (const table of junctionTables) {\n\t\tfor (const schema of schemas) {\n\t\t\tcreateEventStatementTrigger(builder, { name: table.tableName, schema })\n\t\t}\n\t}\n\tfor (const entity of Object.values(schema.model.entities)) {\n\t\tfor (const schema of schemas) {\n\t\t\tcreateEventStatementTrigger(builder, { name: entity.tableName, schema })\n\t\t}\n\t}\n}\n"],"names":["getJunctionTables","schema"],"mappings":"
|
|
1
|
+
{"version":3,"file":"2020-06-01-103000-event-trigger-perf.cjs","sources":["../../../../../packages/engine-system-api/src/migrations/2020-06-01-103000-event-trigger-perf.ts"],"sourcesContent":["import { MigrationBuilder, Name } from '@contember/database-migrations'\nimport { SystemMigrationArgs } from './types'\nimport { getJunctionTables } from '../model'\nimport { MigrationArgs } from '@contember/database-migrations'\n\nconst createEventStatementTrigger = (builder: MigrationBuilder, tableName: Name) => {\n\tbuilder.createTrigger(tableName, 'log_event_statement', {\n\t\twhen: 'AFTER',\n\t\toperation: ['INSERT', 'UPDATE', 'DELETE'],\n\t\tlevel: 'STATEMENT',\n\t\tfunction: {\n\t\t\tschema: 'system',\n\t\t\tname: 'statement_trigger_event',\n\t\t},\n\t})\n}\n\nexport default async function (builder: MigrationBuilder, args: MigrationArgs<SystemMigrationArgs>) {\n\tconst schema = (await args.schemaResolver(args.connection)).schema\n\tconst junctionTables = getJunctionTables(schema.model)\n\tconst schemas = args.project.stages.map(it => `stage_${it.slug}`)\n\tbuilder.sql(`CREATE OR REPLACE FUNCTION \"trigger_event\"() RETURNS TRIGGER AS $$\nDECLARE\n DECLARE new_event_type TEXT;\n DECLARE previous_id UUID;\n DECLARE new_event_data JSONB;\n DECLARE update_diff JSONB;\n DECLARE primary_values JSONB;\n DECLARE old_row JSONB;\n DECLARE new_row JSONB;\nBEGIN\n old_row := CASE WHEN TG_OP = 'DELETE' OR TG_OP = 'UPDATE' THEN to_jsonb(old) ELSE NULL END;\n new_row := CASE WHEN TG_OP = 'INSERT' OR TG_OP = 'UPDATE' THEN to_jsonb(new) ELSE NULL END;\n primary_values := (\n SELECT jsonb_agg(value ORDER BY array_position(TG_ARGV, key))\n FROM jsonb_each(COALESCE(old_row, new_row))\n WHERE key = ANY (TG_ARGV)\n );\n\n\n CASE TG_OP\n WHEN 'INSERT' THEN BEGIN\n new_event_type := 'create';\n new_event_data := jsonb_build_object(\n 'tableName', TG_TABLE_NAME,\n 'rowId', primary_values,\n 'values', COALESCE((\n SELECT jsonb_object_agg(key, value)\n FROM jsonb_each(new_row)\n WHERE NOT (key = ANY (TG_ARGV))\n ), '{}'::JSONB)\n );\n END;\n WHEN 'UPDATE' THEN BEGIN\n update_diff := (\n SELECT jsonb_object_agg(coalesce(n.key, o.key), n.value)\n FROM jsonb_each(old_row) o\n FULL OUTER JOIN\n jsonb_each(new_row) n ON n.key = o.key\n WHERE n.value IS DISTINCT FROM o.value\n );\n IF (SELECT count(*) FROM jsonb_object_keys(update_diff)) = 0 THEN\n RETURN NULL;\n END IF;\n new_event_type := 'update';\n new_event_data := jsonb_build_object(\n 'tableName', TG_TABLE_NAME,\n 'rowId', primary_values,\n 'values', update_diff\n );\n END;\n WHEN 'DELETE' THEN BEGIN\n new_event_type := 'delete';\n new_event_data := jsonb_build_object(\n 'tableName', TG_TABLE_NAME,\n 'rowId', primary_values\n );\n END;\n ELSE RAISE\n EXCEPTION 'Unknown TG_OP value %', TG_OP;\n END CASE;\n CASE WHEN NULLIF(current_setting('system.current_stage_id' || TG_TABLE_SCHEMA, TRUE), '') IS NULL THEN\n PERFORM set_config('system.current_stage_id' || TG_TABLE_SCHEMA, \"id\"::TEXT, TRUE), set_config('system.current_stage_event' || TG_TABLE_SCHEMA, \"event_id\"::TEXT, TRUE)\n FROM \"stage\"\n WHERE \"slug\" = right(TG_TABLE_SCHEMA, -length('stage_'))\n FOR NO KEY UPDATE;\n ELSE\n -- do nothing\n END CASE;\n previous_id := current_setting('system.current_stage_event' || TG_TABLE_SCHEMA)::UUID;\n INSERT INTO \"event\" (\"id\", \"type\", \"data\", \"previous_id\")\n VALUES (set_config('system.current_stage_event' || TG_TABLE_SCHEMA, system.uuid_generate_v4()::TEXT, TRUE)::UUID, new_event_type, new_event_data, previous_id);\n\n RETURN NULL;\nEND;\n\n$$ LANGUAGE plpgsql`)\n\tbuilder.sql(`CREATE OR REPLACE FUNCTION \"statement_trigger_event\"() RETURNS TRIGGER AS\n$$\nBEGIN\n CASE\n WHEN NULLIF(current_setting('system.current_stage_id' || TG_TABLE_SCHEMA, TRUE), '') IS NOT NULL THEN\n UPDATE stage SET event_id = current_setting('system.current_stage_event' || TG_TABLE_SCHEMA)::UUID WHERE id = current_setting('system.current_stage_id' || TG_TABLE_SCHEMA)::UUID;\n ELSE\n -- do nothing\n END CASE;\n RETURN NULL;\nEND;\n$$\n LANGUAGE plpgsql`)\n\tfor (const table of junctionTables) {\n\t\tfor (const schema of schemas) {\n\t\t\tcreateEventStatementTrigger(builder, { name: table.tableName, schema })\n\t\t}\n\t}\n\tfor (const entity of Object.values(schema.model.entities)) {\n\t\tfor (const schema of schemas) {\n\t\t\tcreateEventStatementTrigger(builder, { name: entity.tableName, schema })\n\t\t}\n\t}\n}\n"],"names":["getJunctionTables","schema"],"mappings":";;;;;;;;;;;AAKA,MAAM,8BAA8B,CAAC,SAA2B,cAAoB;AAC3E,UAAA,cAAc,WAAW,uBAAuB;AAAA,IACvD,MAAM;AAAA,IACN,WAAW,CAAC,UAAU,UAAU,QAAQ;AAAA,IACxC,OAAO;AAAA,IACP,UAAU;AAAA,MACT,QAAQ;AAAA,MACR,MAAM;AAAA,IACP;AAAA,EAAA,CACA;AACF;AAEA,eAAA,gCAA+B,SAA2B,MAA0C;AACnG,QAAM,UAAU,MAAM,KAAK,eAAe,KAAK,UAAU,GAAG;AACtD,QAAA,iBAAiBA,aAAAA,kBAAkB,OAAO,KAAK;AAC/C,QAAA,UAAU,KAAK,QAAQ,OAAO,IAAI,CAAM,OAAA,SAAS,GAAG,IAAI,EAAE;AAChE,UAAQ,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBA2EO;AACnB,UAAQ,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAYQ;AACpB,aAAW,SAAS,gBAAgB;AACnC,eAAWC,WAAU,SAAS;AAC7B,kCAA4B,SAAS,EAAE,MAAM,MAAM,WAAW,QAAAA,SAAQ;AAAA,IACvE;AAAA,EACD;AACA,aAAW,UAAU,OAAO,OAAO,OAAO,MAAM,QAAQ,GAAG;AAC1D,eAAWA,WAAU,SAAS;AAC7B,kCAA4B,SAAS,EAAE,MAAM,OAAO,WAAW,QAAAA,SAAQ;AAAA,IACxE;AAAA,EACD;AACD;;"}
|
|
@@ -8,7 +8,6 @@ import "../schema/dev.graphql.js";
|
|
|
8
8
|
import "../schema/system.graphql.js";
|
|
9
9
|
import "@contember/schema-utils";
|
|
10
10
|
import "@contember/logger";
|
|
11
|
-
import "../model/migrations/SchemaVersionBuilder.js";
|
|
12
11
|
const createEventStatementTrigger = (builder, tableName) => {
|
|
13
12
|
builder.createTrigger(tableName, "log_event_statement", {
|
|
14
13
|
when: "AFTER",
|
|
@@ -21,7 +20,7 @@ const createEventStatementTrigger = (builder, tableName) => {
|
|
|
21
20
|
});
|
|
22
21
|
};
|
|
23
22
|
async function _20200601103000eventtriggerperf(builder, args) {
|
|
24
|
-
const schema = await args.schemaResolver(args.connection);
|
|
23
|
+
const schema = (await args.schemaResolver(args.connection)).schema;
|
|
25
24
|
const junctionTables = getJunctionTables(schema.model);
|
|
26
25
|
const schemas = args.project.stages.map((it) => `stage_${it.slug}`);
|
|
27
26
|
builder.sql(`CREATE OR REPLACE FUNCTION "trigger_event"() RETURNS TRIGGER AS $$
|