@contember/engine-system-api 1.2.1 → 1.3.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/src/SystemContainer.d.ts +5 -12
- package/dist/src/SystemContainer.d.ts.map +1 -1
- package/dist/src/SystemContainer.js +4 -7
- package/dist/src/SystemContainer.js.map +1 -1
- package/dist/src/bin/runMigrations.d.ts +2 -0
- package/dist/src/bin/runMigrations.d.ts.map +1 -0
- package/dist/src/bin/runMigrations.js +34 -0
- package/dist/src/bin/runMigrations.js.map +1 -0
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -3
- package/dist/src/index.js.map +1 -1
- package/dist/src/migrations/2018-08-04-102200-init.d.ts +3 -0
- package/dist/src/migrations/2018-08-04-102200-init.d.ts.map +1 -0
- package/dist/src/migrations/2018-08-04-102200-init.js +37 -0
- package/dist/src/migrations/2018-08-04-102200-init.js.map +1 -0
- package/dist/src/migrations/2018-08-05-130501-trigger-event-function.d.ts +3 -0
- package/dist/src/migrations/2018-08-05-130501-trigger-event-function.d.ts.map +1 -0
- package/dist/src/migrations/2018-08-05-130501-trigger-event-function.js +99 -0
- package/dist/src/migrations/2018-08-05-130501-trigger-event-function.js.map +1 -0
- package/dist/src/migrations/2019-01-14-143432-event-trx-id.d.ts +3 -0
- package/dist/src/migrations/2019-01-14-143432-event-trx-id.d.ts.map +1 -0
- package/dist/src/migrations/2019-01-14-143432-event-trx-id.js +17 -0
- package/dist/src/migrations/2019-01-14-143432-event-trx-id.js.map +1 -0
- package/dist/src/migrations/2019-02-04-154500-event-rebase.d.ts +3 -0
- package/dist/src/migrations/2019-02-04-154500-event-rebase.d.ts.map +1 -0
- package/dist/src/migrations/2019-02-04-154500-event-rebase.js +59 -0
- package/dist/src/migrations/2019-02-04-154500-event-rebase.js.map +1 -0
- package/dist/src/migrations/2019-03-18-104147-event-run-migration-struct.d.ts +3 -0
- package/dist/src/migrations/2019-03-18-104147-event-run-migration-struct.d.ts.map +1 -0
- package/dist/src/migrations/2019-03-18-104147-event-run-migration-struct.js +12 -0
- package/dist/src/migrations/2019-03-18-104147-event-run-migration-struct.js.map +1 -0
- package/dist/src/migrations/2019-07-29-103000-trigger-event-function-fix.d.ts +3 -0
- package/dist/src/migrations/2019-07-29-103000-trigger-event-function-fix.d.ts.map +1 -0
- package/dist/src/migrations/2019-07-29-103000-trigger-event-function-fix.js +66 -0
- package/dist/src/migrations/2019-07-29-103000-trigger-event-function-fix.js.map +1 -0
- package/dist/src/migrations/2019-11-28-100000-missing-setting-fallback.d.ts +3 -0
- package/dist/src/migrations/2019-11-28-100000-missing-setting-fallback.d.ts.map +1 -0
- package/dist/src/migrations/2019-11-28-100000-missing-setting-fallback.js +21 -0
- package/dist/src/migrations/2019-11-28-100000-missing-setting-fallback.js.map +1 -0
- package/dist/src/migrations/2021-03-23-110000-timestamp-fix.d.ts +3 -0
- package/dist/src/migrations/2021-03-23-110000-timestamp-fix.d.ts.map +1 -0
- package/dist/src/migrations/2021-03-23-110000-timestamp-fix.js +15 -0
- package/dist/src/migrations/2021-03-23-110000-timestamp-fix.js.map +1 -0
- package/dist/src/migrations/2021-05-07-155800-event-log-rework.js +2 -2
- package/dist/src/migrations/2021-12-21-155500-events-up.d.ts +3 -0
- package/dist/src/migrations/2021-12-21-155500-events-up.d.ts.map +1 -0
- package/dist/src/migrations/2021-12-21-155500-events-up.js +15 -0
- package/dist/src/migrations/2021-12-21-155500-events-up.js.map +1 -0
- package/dist/src/migrations/2022-02-08-132600-fn-search-path.d.ts +3 -0
- package/dist/src/migrations/2022-02-08-132600-fn-search-path.d.ts.map +1 -0
- package/dist/src/migrations/2022-02-08-132600-fn-search-path.js +16 -0
- package/dist/src/migrations/2022-02-08-132600-fn-search-path.js.map +1 -0
- package/dist/src/migrations/2022-02-08-140500-drop-deadcode.d.ts +3 -0
- package/dist/src/migrations/2022-02-08-140500-drop-deadcode.d.ts.map +1 -0
- package/dist/src/migrations/2022-02-08-140500-drop-deadcode.js +11 -0
- package/dist/src/migrations/2022-02-08-140500-drop-deadcode.js.map +1 -0
- package/dist/src/migrations/2022-02-08-144400-dynamic-stage-schema.d.ts +3 -0
- package/dist/src/migrations/2022-02-08-144400-dynamic-stage-schema.d.ts.map +1 -0
- package/dist/src/migrations/2022-02-08-144400-dynamic-stage-schema.js +50 -0
- package/dist/src/migrations/2022-02-08-144400-dynamic-stage-schema.js.map +1 -0
- package/dist/src/migrations/2022-10-03-110000-table-on-delete.d.ts +4 -0
- package/dist/src/migrations/2022-10-03-110000-table-on-delete.d.ts.map +1 -0
- package/dist/src/migrations/2022-10-03-110000-table-on-delete.js +61 -0
- package/dist/src/migrations/2022-10-03-110000-table-on-delete.js.map +1 -0
- package/dist/src/migrations/runner.d.ts +18 -3
- package/dist/src/migrations/runner.d.ts.map +1 -1
- package/dist/src/migrations/runner.js +69 -10
- package/dist/src/migrations/runner.js.map +1 -1
- package/dist/src/migrations/snapshot-factory.d.ts +6 -0
- package/dist/src/migrations/snapshot-factory.d.ts.map +1 -0
- package/dist/src/migrations/snapshot-factory.js +46 -0
- package/dist/src/migrations/snapshot-factory.js.map +1 -0
- package/dist/src/migrations/snapshot.d.ts +3 -0
- package/dist/src/migrations/snapshot.d.ts.map +1 -0
- package/dist/src/migrations/snapshot.js +172 -0
- package/dist/src/migrations/snapshot.js.map +1 -0
- package/dist/src/migrations/types.d.ts +2 -0
- package/dist/src/migrations/types.d.ts.map +1 -1
- package/dist/src/model/ProjectInitializer.d.ts +6 -10
- package/dist/src/model/ProjectInitializer.d.ts.map +1 -1
- package/dist/src/model/ProjectInitializer.js +11 -29
- package/dist/src/model/ProjectInitializer.js.map +1 -1
- package/dist/src/model/commands/Command.d.ts +1 -5
- package/dist/src/model/commands/Command.d.ts.map +1 -1
- package/dist/src/model/database/DatabaseContext.d.ts +5 -4
- package/dist/src/model/database/DatabaseContext.d.ts.map +1 -1
- package/dist/src/model/database/DatabaseContext.js +7 -7
- package/dist/src/model/database/DatabaseContext.js.map +1 -1
- package/dist/src/model/dtos/ExecutedMigration.d.ts +2 -1
- package/dist/src/model/dtos/ExecutedMigration.d.ts.map +1 -1
- package/dist/src/model/dtos/ExecutedMigration.js +2 -1
- package/dist/src/model/dtos/ExecutedMigration.js.map +1 -1
- package/dist/src/model/events/EventResponseBuilder.d.ts +2 -2
- package/dist/src/model/events/EventResponseBuilder.d.ts.map +1 -1
- package/dist/src/model/events/EventResponseBuilder.js +10 -10
- package/dist/src/model/events/EventResponseBuilder.js.map +1 -1
- package/dist/src/model/events/EventResponseHelper.d.ts +1 -1
- package/dist/src/model/events/EventResponseHelper.d.ts.map +1 -1
- package/dist/src/model/events/index.d.ts +1 -0
- package/dist/src/model/events/index.d.ts.map +1 -1
- package/dist/src/model/events/index.js +1 -0
- package/dist/src/model/events/index.js.map +1 -1
- package/dist/src/model/events/types.d.ts +56 -0
- package/dist/src/model/events/types.d.ts.map +1 -0
- package/dist/src/model/events/types.js +51 -0
- package/dist/src/model/events/types.js.map +1 -0
- package/dist/src/model/helpers/index.d.ts +0 -1
- package/dist/src/model/helpers/index.d.ts.map +1 -1
- package/dist/src/model/helpers/index.js +0 -1
- package/dist/src/model/helpers/index.js.map +1 -1
- package/dist/src/model/index.d.ts +1 -0
- package/dist/src/model/index.d.ts.map +1 -1
- package/dist/src/model/index.js +1 -0
- package/dist/src/model/index.js.map +1 -1
- package/dist/src/model/metadata/ResolvedDatabaseMetadata.d.ts +13 -0
- package/dist/src/model/metadata/ResolvedDatabaseMetadata.d.ts.map +1 -0
- package/dist/src/model/metadata/ResolvedDatabaseMetadata.js +42 -0
- package/dist/src/model/metadata/ResolvedDatabaseMetadata.js.map +1 -0
- package/dist/src/model/metadata/SchemaDatabaseMetadataResolver.d.ts +8 -0
- package/dist/src/model/metadata/SchemaDatabaseMetadataResolver.d.ts.map +1 -0
- package/dist/src/model/metadata/SchemaDatabaseMetadataResolver.js +92 -0
- package/dist/src/model/metadata/SchemaDatabaseMetadataResolver.js.map +1 -0
- package/dist/src/model/metadata/SchemaDatabaseMetadataResolverStore.d.ts +17 -0
- package/dist/src/model/metadata/SchemaDatabaseMetadataResolverStore.d.ts.map +1 -0
- package/dist/src/model/metadata/SchemaDatabaseMetadataResolverStore.js +33 -0
- package/dist/src/model/metadata/SchemaDatabaseMetadataResolverStore.js.map +1 -0
- package/dist/src/model/metadata/index.d.ts +4 -0
- package/dist/src/model/metadata/index.d.ts.map +1 -0
- package/dist/src/model/metadata/index.js +22 -0
- package/dist/src/model/metadata/index.js.map +1 -0
- package/dist/src/model/migrations/ProjectMigrator.d.ts +3 -1
- package/dist/src/model/migrations/ProjectMigrator.d.ts.map +1 -1
- package/dist/src/model/migrations/ProjectMigrator.js +14 -6
- package/dist/src/model/migrations/ProjectMigrator.js.map +1 -1
- package/dist/src/model/migrations/SchemaVersionBuilder.d.ts +20 -0
- package/dist/src/model/migrations/SchemaVersionBuilder.d.ts.map +1 -1
- package/dist/src/model/migrations/SchemaVersionBuilder.js +5 -4
- package/dist/src/model/migrations/SchemaVersionBuilder.js.map +1 -1
- package/dist/src/model/queries/events/EventQueryHelpers.d.ts +2 -2
- package/dist/src/model/queries/events/EventQueryHelpers.d.ts.map +1 -1
- package/dist/src/model/queries/events/EventQueryHelpers.js +7 -7
- package/dist/src/model/queries/events/EventQueryHelpers.js.map +1 -1
- package/dist/src/model/queries/events/EventsQuery.d.ts +2 -2
- package/dist/src/model/queries/events/EventsQuery.d.ts.map +1 -1
- package/dist/src/model/queries/events/EventsQuery.js.map +1 -1
- package/dist/src/model/queries/migrations/ExecutedMigrationsQueryHelper.d.ts +1 -0
- package/dist/src/model/queries/migrations/ExecutedMigrationsQueryHelper.d.ts.map +1 -1
- package/dist/src/model/queries/migrations/ExecutedMigrationsQueryHelper.js +2 -1
- package/dist/src/model/queries/migrations/ExecutedMigrationsQueryHelper.js.map +1 -1
- package/dist/src/tsconfig.tsbuildinfo +1 -1
- package/dist/tests/cases/migrations/2020-05-06-150000-composed-primary.test.js +2 -0
- package/dist/tests/cases/migrations/2020-05-06-150000-composed-primary.test.js.map +1 -1
- package/dist/tests/cases/migrations/2020-06-01-103000-event-trigger-perf.test.js +2 -0
- package/dist/tests/cases/migrations/2020-06-01-103000-event-trigger-perf.test.js.map +1 -1
- package/dist/tests/cases/migrations/2022-10-03-110000-table-on-delete.test.d.ts +2 -0
- package/dist/tests/cases/migrations/2022-10-03-110000-table-on-delete.test.d.ts.map +1 -0
- package/dist/tests/cases/migrations/2022-10-03-110000-table-on-delete.test.js +43 -0
- package/dist/tests/cases/migrations/2022-10-03-110000-table-on-delete.test.js.map +1 -0
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/package.json +18 -15
- package/src/SystemContainer.ts +8 -18
- package/src/bin/runMigrations.ts +42 -0
- package/src/index.ts +2 -2
- package/src/migrations/{2018-08-04-102200-init.sql → 2018-08-04-102200-init.ts} +8 -0
- package/src/migrations/{2018-08-05-130501-trigger-event-function.sql → 2018-08-05-130501-trigger-event-function.ts} +8 -0
- package/src/migrations/{2019-01-14-143432-event-trx-id.sql → 2019-01-14-143432-event-trx-id.ts} +8 -0
- package/src/migrations/{2019-02-04-154500-event-rebase.sql → 2019-02-04-154500-event-rebase.ts} +9 -0
- package/src/migrations/2019-03-18-104147-event-run-migration-struct.ts +11 -0
- package/src/migrations/{2019-07-29-103000-trigger-event-function-fix.sql → 2019-07-29-103000-trigger-event-function-fix.ts} +8 -0
- package/src/migrations/{2019-11-28-100000-missing-setting-fallback.sql → 2019-11-28-100000-missing-setting-fallback.ts} +8 -0
- package/src/migrations/{2021-03-23-110000-timestamp-fix.sql → 2021-03-23-110000-timestamp-fix.ts} +8 -0
- package/src/migrations/2021-05-07-155800-event-log-rework.ts +2 -2
- package/src/migrations/{2021-12-21-155500-events-up.sql → 2021-12-21-155500-events-up.ts} +8 -0
- package/src/migrations/{2022-02-08-132600-fn-search-path.sql → 2022-02-08-132600-fn-search-path.ts} +8 -0
- package/src/migrations/2022-02-08-140500-drop-deadcode.ts +10 -0
- package/src/migrations/{2022-02-08-144400-dynamic-stage-schema.sql → 2022-02-08-144400-dynamic-stage-schema.ts} +8 -0
- package/src/migrations/2022-10-03-110000-table-on-delete.ts +65 -0
- package/src/migrations/runner.ts +85 -15
- package/src/migrations/snapshot-factory.ts +45 -0
- package/src/migrations/snapshot-template-end.txt +1 -0
- package/src/migrations/snapshot-template-start.txt +2 -0
- package/src/migrations/snapshot.ts +169 -0
- package/src/migrations/types.ts +2 -0
- package/src/model/ProjectInitializer.ts +15 -50
- package/src/model/commands/Command.ts +1 -1
- package/src/model/database/DatabaseContext.ts +12 -8
- package/src/model/dtos/ExecutedMigration.ts +1 -0
- package/src/model/events/EventResponseBuilder.ts +3 -3
- package/src/model/events/EventResponseHelper.ts +1 -1
- package/src/model/events/index.ts +1 -0
- package/src/model/events/types.ts +63 -0
- package/src/model/helpers/index.ts +0 -1
- package/src/model/index.ts +1 -0
- package/src/model/metadata/ResolvedDatabaseMetadata.ts +54 -0
- package/src/model/metadata/SchemaDatabaseMetadataResolver.ts +136 -0
- package/src/model/metadata/SchemaDatabaseMetadataResolverStore.ts +41 -0
- package/src/model/metadata/index.ts +3 -0
- package/src/model/migrations/ProjectMigrator.ts +19 -5
- package/src/model/migrations/SchemaVersionBuilder.ts +3 -2
- package/src/model/queries/events/EventQueryHelpers.ts +2 -2
- package/src/model/queries/events/EventsQuery.ts +2 -2
- package/src/model/queries/migrations/ExecutedMigrationsQueryHelper.ts +3 -1
- package/src/tsconfig.json +10 -33
- package/tests/cases/migrations/2020-05-06-150000-composed-primary.test.ts +2 -0
- package/tests/cases/migrations/2020-06-01-103000-event-trigger-perf.test.ts +2 -0
- package/tests/cases/migrations/2022-10-03-110000-table-on-delete.test.ts +45 -0
- package/tests/tsconfig.json +2 -6
- package/tsconfig.json +2 -6
- package/dist/src/model/helpers/SystemVariablesSetupHelper.d.ts +0 -5
- package/dist/src/model/helpers/SystemVariablesSetupHelper.d.ts.map +0 -1
- package/dist/src/model/helpers/SystemVariablesSetupHelper.js +0 -15
- package/dist/src/model/helpers/SystemVariablesSetupHelper.js.map +0 -1
- package/dist/tests/cases/integration/systemApi/projectInitializer.test.d.ts +0 -2
- package/dist/tests/cases/integration/systemApi/projectInitializer.test.d.ts.map +0 -1
- package/dist/tests/cases/integration/systemApi/projectInitializer.test.js +0 -26
- package/dist/tests/cases/integration/systemApi/projectInitializer.test.js.map +0 -1
- package/src/migrations/2019-03-18-104147-event-run-migration-struct.sql +0 -3
- package/src/migrations/2022-02-08-140500-drop-deadcode.sql +0 -2
- package/src/model/helpers/SystemVariablesSetupHelper.ts +0 -14
- package/tests/cases/integration/systemApi/projectInitializer.test.ts +0 -31
|
@@ -9,12 +9,17 @@ import { MigrateErrorCode } from '../../schema'
|
|
|
9
9
|
import { SchemaVersionBuilder } from './SchemaVersionBuilder'
|
|
10
10
|
import { SchemaValidator } from '@contember/schema-utils'
|
|
11
11
|
import { logger } from '@contember/logger'
|
|
12
|
+
import {
|
|
13
|
+
SchemaDatabaseMetadataResolverStore,
|
|
14
|
+
MigrationsDatabaseMetadataResolverStoreFactory,
|
|
15
|
+
} from '../metadata/SchemaDatabaseMetadataResolverStore'
|
|
12
16
|
|
|
13
17
|
export class ProjectMigrator {
|
|
14
18
|
constructor(
|
|
15
19
|
private readonly migrationDescriber: MigrationDescriber,
|
|
16
20
|
private readonly schemaVersionBuilder: SchemaVersionBuilder,
|
|
17
21
|
private readonly executedMigrationsResolver: ExecutedMigrationsResolver,
|
|
22
|
+
private readonly migrationsDatabaseMetadataResolverStoreFactory: MigrationsDatabaseMetadataResolverStoreFactory,
|
|
18
23
|
) {}
|
|
19
24
|
|
|
20
25
|
public async migrate(
|
|
@@ -29,11 +34,13 @@ export class ProjectMigrator {
|
|
|
29
34
|
if (migrationsToExecute.length === 0) {
|
|
30
35
|
return
|
|
31
36
|
}
|
|
32
|
-
let { version, notNormalized, ...schema } = await this.schemaVersionBuilder.buildSchema(db)
|
|
37
|
+
let { version, notNormalized, id, ...schema } = await this.schemaVersionBuilder.buildSchema(db)
|
|
33
38
|
const validated = await this.validateMigrations(db, schema, version, migrationsToExecute, { ignoreOrder, skipExecuted })
|
|
34
39
|
|
|
35
40
|
const sorted = [...validated].sort((a, b) => a.version.localeCompare(b.version))
|
|
36
41
|
|
|
42
|
+
const metadataStore = this.migrationsDatabaseMetadataResolverStoreFactory.create(db)
|
|
43
|
+
|
|
37
44
|
for (const migration of sorted) {
|
|
38
45
|
const formatVersion = migration.formatVersion
|
|
39
46
|
|
|
@@ -46,6 +53,7 @@ export class ProjectMigrator {
|
|
|
46
53
|
formatVersion,
|
|
47
54
|
migration.version,
|
|
48
55
|
db.client.schema,
|
|
56
|
+
metadataStore,
|
|
49
57
|
)
|
|
50
58
|
}
|
|
51
59
|
await db.commandBus.execute(new SaveMigrationCommand(migration))
|
|
@@ -76,7 +84,7 @@ export class ProjectMigrator {
|
|
|
76
84
|
if (migration.version < version && !ignoreOrder) {
|
|
77
85
|
throw new MustFollowLatestMigrationError(migration.version, `Must follow latest executed migration ${version}`)
|
|
78
86
|
}
|
|
79
|
-
const described =
|
|
87
|
+
const described = this.migrationDescriber.describeModifications(schema, migration)
|
|
80
88
|
if (described.length === 0) {
|
|
81
89
|
continue
|
|
82
90
|
}
|
|
@@ -112,13 +120,19 @@ export class ProjectMigrator {
|
|
|
112
120
|
formatVersion: number,
|
|
113
121
|
migrationVersion: string,
|
|
114
122
|
systemSchema: string,
|
|
123
|
+
metadataStore: SchemaDatabaseMetadataResolverStore,
|
|
115
124
|
): Promise<[Schema]> {
|
|
116
125
|
const {
|
|
117
|
-
|
|
126
|
+
getSql,
|
|
118
127
|
schema: newSchema,
|
|
119
|
-
|
|
120
|
-
} = await this.migrationDescriber.describeModification(schema, modification, { systemSchema, formatVersion })
|
|
128
|
+
} = this.migrationDescriber.describeModification(schema, modification, { formatVersion })
|
|
121
129
|
for (const stage of stages) {
|
|
130
|
+
const databaseMetadata = await metadataStore.getMetadata(stage.schema)
|
|
131
|
+
const sql = getSql({
|
|
132
|
+
systemSchema,
|
|
133
|
+
databaseMetadata,
|
|
134
|
+
invalidateDatabaseMetadata: () => metadataStore.invalidate(stage.schema),
|
|
135
|
+
})
|
|
122
136
|
await this.executeOnStage(db, stage, sql, migrationVersion)
|
|
123
137
|
}
|
|
124
138
|
return [newSchema]
|
|
@@ -5,9 +5,9 @@ import { ExecutedMigrationsResolver } from './ExecutedMigrationsResolver'
|
|
|
5
5
|
import { DatabaseContext } from '../database'
|
|
6
6
|
import { normalizeSchema } from '@contember/schema-utils'
|
|
7
7
|
|
|
8
|
-
export type VersionedSchema = Schema & { version: string; notNormalized: Schema & { version: string } }
|
|
8
|
+
export type VersionedSchema = Schema & { version: string; id: number; notNormalized: Schema & { version: string; id: number } }
|
|
9
9
|
|
|
10
|
-
const emptyVersionedSchema = { ...normalizeSchema(emptySchema), version: '', notNormalized: { ...emptySchema, version: '' } }
|
|
10
|
+
export const emptyVersionedSchema = { ...normalizeSchema(emptySchema), version: '', id: -1, notNormalized: { ...emptySchema, version: '', id: -1 } }
|
|
11
11
|
|
|
12
12
|
export class SchemaVersionBuilder {
|
|
13
13
|
constructor(
|
|
@@ -25,6 +25,7 @@ export class SchemaVersionBuilder {
|
|
|
25
25
|
(schema, migration) => ({
|
|
26
26
|
...this.schemaMigrator.applyModifications(schema, migration.modifications, migration.formatVersion),
|
|
27
27
|
version: migration.version,
|
|
28
|
+
id: migration.id,
|
|
28
29
|
}),
|
|
29
30
|
after?.notNormalized ?? emptyVersionedSchema.notNormalized,
|
|
30
31
|
)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ContentEvent, CreateEvent, DeleteEvent, EventType, UpdateEvent } from '../../events'
|
|
2
2
|
import { assertNever } from '../../../utils'
|
|
3
3
|
|
|
4
4
|
export type EventRow = {
|
|
@@ -13,7 +13,7 @@ export type EventRow = {
|
|
|
13
13
|
transaction_id: string
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
export const createEventsFromRows = (rows: EventRow[]):
|
|
16
|
+
export const createEventsFromRows = (rows: EventRow[]): ContentEvent[] => {
|
|
17
17
|
return rows.map(event => {
|
|
18
18
|
switch (event.type) {
|
|
19
19
|
case EventType.create:
|
|
@@ -6,11 +6,11 @@ import {
|
|
|
6
6
|
SelectBuilder,
|
|
7
7
|
SelectBuilderSpecification, Value,
|
|
8
8
|
} from '@contember/database'
|
|
9
|
-
import {
|
|
9
|
+
import { ContentEvent } from '../../events'
|
|
10
10
|
import { EventsFilter, EventsFilterDate, EventsOrder } from '../../../schema'
|
|
11
11
|
import { createEventsFromRows, EventRow } from './EventQueryHelpers'
|
|
12
12
|
|
|
13
|
-
export class EventsQuery extends DatabaseQuery<
|
|
13
|
+
export class EventsQuery extends DatabaseQuery<ContentEvent[]> {
|
|
14
14
|
constructor(
|
|
15
15
|
private readonly filter: EventsFilter,
|
|
16
16
|
private readonly order: EventsOrder,
|
|
@@ -2,9 +2,10 @@ import { SelectBuilder } from '@contember/database'
|
|
|
2
2
|
import { ExecutedMigration } from '../../dtos'
|
|
3
3
|
import { VERSION_INITIAL } from '@contember/schema-migrations'
|
|
4
4
|
|
|
5
|
-
type ExecutedMigrationRow = { name: string; migration: any; checksum: string; executed_at: Date }
|
|
5
|
+
type ExecutedMigrationRow = { id: number; name: string; migration: any; checksum: string; executed_at: Date }
|
|
6
6
|
export const createExecutedMigrationQueryBuilder = () =>
|
|
7
7
|
SelectBuilder.create<ExecutedMigrationRow>()
|
|
8
|
+
.select('id')
|
|
8
9
|
.select('name')
|
|
9
10
|
.select('migration')
|
|
10
11
|
.select('checksum')
|
|
@@ -14,6 +15,7 @@ export const createExecutedMigrationQueryBuilder = () =>
|
|
|
14
15
|
|
|
15
16
|
export const createExecutedMigrationDto = (row: ExecutedMigrationRow) =>
|
|
16
17
|
new ExecutedMigration(
|
|
18
|
+
row.id,
|
|
17
19
|
row.name,
|
|
18
20
|
row.migration.formatVersion || VERSION_INITIAL,
|
|
19
21
|
row.migration.modifications,
|
package/src/tsconfig.json
CHANGED
|
@@ -5,38 +5,15 @@
|
|
|
5
5
|
"esModuleInterop": true
|
|
6
6
|
},
|
|
7
7
|
"references": [
|
|
8
|
-
{
|
|
9
|
-
|
|
10
|
-
},
|
|
11
|
-
{
|
|
12
|
-
|
|
13
|
-
},
|
|
14
|
-
{
|
|
15
|
-
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
"path": "../../engine-common/src"
|
|
19
|
-
},
|
|
20
|
-
{
|
|
21
|
-
"path": "../../graphql-utils/src"
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
"path": "../../logger/src"
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
"path": "../../queryable/src"
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
"path": "../../schema/src"
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
"path": "../../schema-utils/src"
|
|
34
|
-
},
|
|
35
|
-
{
|
|
36
|
-
"path": "../../schema-migrations/src"
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
"path": "../../dic/src"
|
|
40
|
-
}
|
|
8
|
+
{ "path": "../../authorization/src" },
|
|
9
|
+
{ "path": "../../database/src" },
|
|
10
|
+
{ "path": "../../database-migrations/src" },
|
|
11
|
+
{ "path": "../../graphql-utils/src" },
|
|
12
|
+
{ "path": "../../logger/src" },
|
|
13
|
+
{ "path": "../../queryable/src" },
|
|
14
|
+
{ "path": "../../schema/src" },
|
|
15
|
+
{ "path": "../../schema-utils/src" },
|
|
16
|
+
{ "path": "../../schema-migrations/src" },
|
|
17
|
+
{ "path": "../../dic/src" }
|
|
41
18
|
]
|
|
42
19
|
}
|
|
@@ -2,12 +2,14 @@ import migration from '../../../src/migrations/2020-05-06-150000-composed-primar
|
|
|
2
2
|
import { createMigrationBuilder } from '@contember/database-migrations'
|
|
3
3
|
import { sampleProject } from '@contember/engine-api-tester'
|
|
4
4
|
import { test, assert } from 'vitest'
|
|
5
|
+
import { dummySchemaDatabaseMetadata } from '@contember/schema-utils'
|
|
5
6
|
|
|
6
7
|
test('many-has-many-primary migration sql', async () => {
|
|
7
8
|
const builder = createMigrationBuilder()
|
|
8
9
|
await migration(builder, {
|
|
9
10
|
connection: undefined as any,
|
|
10
11
|
schemaResolver: () => Promise.resolve(sampleProject),
|
|
12
|
+
databaseMetadataResolver: () => Promise.resolve(dummySchemaDatabaseMetadata),
|
|
11
13
|
project: {
|
|
12
14
|
slug: 'test',
|
|
13
15
|
stages: [
|
|
@@ -2,6 +2,7 @@ import migration from '../../../src/migrations/2020-06-01-103000-event-trigger-p
|
|
|
2
2
|
import { createMigrationBuilder } from '@contember/database-migrations'
|
|
3
3
|
import { sampleProject } from '@contember/engine-api-tester'
|
|
4
4
|
import { test, assert } from 'vitest'
|
|
5
|
+
import { dummySchemaDatabaseMetadata } from '@contember/schema-utils'
|
|
5
6
|
|
|
6
7
|
|
|
7
8
|
test('event-trigger-performance sql', async () => {
|
|
@@ -9,6 +10,7 @@ test('event-trigger-performance sql', async () => {
|
|
|
9
10
|
await migration(builder, {
|
|
10
11
|
connection: undefined as any,
|
|
11
12
|
schemaResolver: () => Promise.resolve(sampleProject),
|
|
13
|
+
databaseMetadataResolver: () => Promise.resolve(dummySchemaDatabaseMetadata),
|
|
12
14
|
project: {
|
|
13
15
|
slug: 'test',
|
|
14
16
|
stages: [
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import migration from '../../../src/migrations/2022-10-03-110000-table-on-delete'
|
|
2
|
+
import { createMigrationBuilder } from '@contember/database-migrations'
|
|
3
|
+
import { assert, test } from 'vitest'
|
|
4
|
+
import { SchemaBuilder } from '@contember/schema-definition'
|
|
5
|
+
import { dummySchemaDatabaseMetadata, emptySchema } from '@contember/schema-utils'
|
|
6
|
+
import { Model } from '@contember/schema'
|
|
7
|
+
import { createConnectionMock } from '@contember/database-tester'
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
test('table-on-delete test', async () => {
|
|
11
|
+
const builder = createMigrationBuilder()
|
|
12
|
+
const connection = createConnectionMock([{
|
|
13
|
+
sql: 'select schema from stage',
|
|
14
|
+
response: { rows: [{ schema: 'stage_live' }] },
|
|
15
|
+
}])
|
|
16
|
+
await migration(builder, {
|
|
17
|
+
connection: connection,
|
|
18
|
+
databaseMetadataResolver: () => Promise.resolve(dummySchemaDatabaseMetadata),
|
|
19
|
+
schemaResolver: () => Promise.resolve(({ ...emptySchema, model: new SchemaBuilder()
|
|
20
|
+
.entity('Post', entity =>
|
|
21
|
+
entity.manyHasOne('author', relation => relation.target('Author').onDelete(Model.OnDelete.setNull)),
|
|
22
|
+
)
|
|
23
|
+
.entity('Author', entity => entity)
|
|
24
|
+
.buildSchema() })),
|
|
25
|
+
project: {
|
|
26
|
+
slug: 'test',
|
|
27
|
+
stages: [
|
|
28
|
+
{
|
|
29
|
+
slug: 'prod',
|
|
30
|
+
name: 'prod',
|
|
31
|
+
},
|
|
32
|
+
],
|
|
33
|
+
},
|
|
34
|
+
})
|
|
35
|
+
assert.equal(
|
|
36
|
+
builder.getSql(),
|
|
37
|
+
`ALTER TABLE "stage_live"."post" DROP CONSTRAINT "fk_post_author_id_author_id";
|
|
38
|
+
ALTER TABLE "stage_live"."post"
|
|
39
|
+
ADD FOREIGN KEY ("author_id")
|
|
40
|
+
REFERENCES "stage_live"."author" ("id") ON DELETE SET NULL DEFERRABLE INITIALLY IMMEDIATE
|
|
41
|
+
;
|
|
42
|
+
`,
|
|
43
|
+
)
|
|
44
|
+
})
|
|
45
|
+
|
package/tests/tsconfig.json
CHANGED
package/tsconfig.json
CHANGED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { Client } from '@contember/database';
|
|
2
|
-
import { UuidProvider } from '../../utils';
|
|
3
|
-
export declare const unnamedIdentity = "00000000-0000-0000-0000-000000000000";
|
|
4
|
-
export declare function setupSystemVariables(db: Client, identityId: string, providers: UuidProvider): Promise<void>;
|
|
5
|
-
//# sourceMappingURL=SystemVariablesSetupHelper.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SystemVariablesSetupHelper.d.ts","sourceRoot":"","sources":["../../../../src/model/helpers/SystemVariablesSetupHelper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,eAAO,MAAM,eAAe,yCAAyC,CAAA;AAErE,wBAAsB,oBAAoB,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,iBAQjG"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.setupSystemVariables = exports.unnamedIdentity = void 0;
|
|
4
|
-
exports.unnamedIdentity = '00000000-0000-0000-0000-000000000000';
|
|
5
|
-
async function setupSystemVariables(db, identityId, providers) {
|
|
6
|
-
await Promise.all([
|
|
7
|
-
await db.query('SELECT set_config(?, ?, false)', [
|
|
8
|
-
'tenant.identity_id',
|
|
9
|
-
identityId,
|
|
10
|
-
]),
|
|
11
|
-
await db.query('SELECT set_config(?, ?, false)', ['system.transaction_id', providers.uuid()]),
|
|
12
|
-
]);
|
|
13
|
-
}
|
|
14
|
-
exports.setupSystemVariables = setupSystemVariables;
|
|
15
|
-
//# sourceMappingURL=SystemVariablesSetupHelper.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SystemVariablesSetupHelper.js","sourceRoot":"","sources":["../../../../src/model/helpers/SystemVariablesSetupHelper.ts"],"names":[],"mappings":";;;AAGa,QAAA,eAAe,GAAG,sCAAsC,CAAA;AAE9D,KAAK,UAAU,oBAAoB,CAAC,EAAU,EAAE,UAAkB,EAAE,SAAuB;IACjG,MAAM,OAAO,CAAC,GAAG,CAAC;QACjB,MAAM,EAAE,CAAC,KAAK,CAAC,gCAAgC,EAAE;YAChD,oBAAoB;YACpB,UAAU;SACV,CAAC;QACF,MAAM,EAAE,CAAC,KAAK,CAAC,gCAAgC,EAAE,CAAC,uBAAuB,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;KAC7F,CAAC,CAAA;AACH,CAAC;AARD,oDAQC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"projectInitializer.test.d.ts","sourceRoot":"","sources":["../../../../../tests/cases/integration/systemApi/projectInitializer.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const engine_api_tester_1 = require("@contember/engine-api-tester");
|
|
4
|
-
const vitest_1 = require("vitest");
|
|
5
|
-
const logger_1 = require("@contember/logger");
|
|
6
|
-
const logger = (0, logger_1.createLogger)(new logger_1.JsonStreamLoggerHandler(process.stderr));
|
|
7
|
-
(0, vitest_1.test)('create stage', async () => {
|
|
8
|
-
const prodStage = {
|
|
9
|
-
name: 'Prod',
|
|
10
|
-
slug: 'prod',
|
|
11
|
-
};
|
|
12
|
-
const project = {
|
|
13
|
-
slug: 'example-project',
|
|
14
|
-
stages: [prodStage],
|
|
15
|
-
};
|
|
16
|
-
const tester = await engine_api_tester_1.ApiTester.create({
|
|
17
|
-
project: {
|
|
18
|
-
stages: [prodStage],
|
|
19
|
-
},
|
|
20
|
-
});
|
|
21
|
-
await tester.systemContainer.projectInitializer.initialize(tester.databaseContextFactory, project, logger);
|
|
22
|
-
const createdStagesA = await tester.stages.refreshCreatedStages();
|
|
23
|
-
vitest_1.assert.ok(createdStagesA.has('prod'));
|
|
24
|
-
await tester.cleanup();
|
|
25
|
-
});
|
|
26
|
-
//# sourceMappingURL=projectInitializer.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"projectInitializer.test.js","sourceRoot":"","sources":["../../../../../tests/cases/integration/systemApi/projectInitializer.test.ts"],"names":[],"mappings":";;AAAA,oEAAwD;AAExD,mCAAqC;AACrC,8CAAyE;AAGzE,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,IAAI,gCAAuB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;AAExE,IAAA,aAAI,EAAC,cAAc,EAAE,KAAK,IAAI,EAAE;IAC/B,MAAM,SAAS,GAAgB;QAC9B,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,MAAM;KACZ,CAAA;IACD,MAAM,OAAO,GAAkB;QAC9B,IAAI,EAAE,iBAAiB;QACvB,MAAM,EAAE,CAAC,SAAS,CAAC;KACnB,CAAA;IAED,MAAM,MAAM,GAAG,MAAM,6BAAS,CAAC,MAAM,CAAC;QACrC,OAAO,EAAE;YACR,MAAM,EAAE,CAAC,SAAS,CAAC;SACnB;KACD,CAAC,CAAA;IAEF,MAAM,MAAM,CAAC,eAAe,CAAC,kBAAkB,CAAC,UAAU,CAAC,MAAM,CAAC,sBAAsB,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;IAC1G,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAA;IACjE,eAAM,CAAC,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;IAErC,MAAM,MAAM,CAAC,OAAO,EAAE,CAAA;AACvB,CAAC,CAAC,CAAA"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { Client } from '@contember/database'
|
|
2
|
-
import { UuidProvider } from '../../utils'
|
|
3
|
-
|
|
4
|
-
export const unnamedIdentity = '00000000-0000-0000-0000-000000000000'
|
|
5
|
-
|
|
6
|
-
export async function setupSystemVariables(db: Client, identityId: string, providers: UuidProvider) {
|
|
7
|
-
await Promise.all([
|
|
8
|
-
await db.query('SELECT set_config(?, ?, false)', [
|
|
9
|
-
'tenant.identity_id', // todo rename to system.identity_id
|
|
10
|
-
identityId,
|
|
11
|
-
]),
|
|
12
|
-
await db.query('SELECT set_config(?, ?, false)', ['system.transaction_id', providers.uuid()]),
|
|
13
|
-
])
|
|
14
|
-
}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { ApiTester } from '@contember/engine-api-tester'
|
|
2
|
-
import { ProjectConfig, StageConfig } from '../../../../src'
|
|
3
|
-
import { assert, test } from 'vitest'
|
|
4
|
-
import { createLogger, JsonStreamLoggerHandler } from '@contember/logger'
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const logger = createLogger(new JsonStreamLoggerHandler(process.stderr))
|
|
8
|
-
|
|
9
|
-
test('create stage', async () => {
|
|
10
|
-
const prodStage: StageConfig = {
|
|
11
|
-
name: 'Prod',
|
|
12
|
-
slug: 'prod',
|
|
13
|
-
}
|
|
14
|
-
const project: ProjectConfig = {
|
|
15
|
-
slug: 'example-project',
|
|
16
|
-
stages: [prodStage],
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
const tester = await ApiTester.create({
|
|
20
|
-
project: {
|
|
21
|
-
stages: [prodStage],
|
|
22
|
-
},
|
|
23
|
-
})
|
|
24
|
-
|
|
25
|
-
await tester.systemContainer.projectInitializer.initialize(tester.databaseContextFactory, project, logger)
|
|
26
|
-
const createdStagesA = await tester.stages.refreshCreatedStages()
|
|
27
|
-
assert.ok(createdStagesA.has('prod'))
|
|
28
|
-
|
|
29
|
-
await tester.cleanup()
|
|
30
|
-
})
|
|
31
|
-
|