@contember/engine-system-api 2.1.0-alpha.28 → 2.1.0-alpha.29

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contember/engine-system-api",
3
- "version": "2.1.0-alpha.28",
3
+ "version": "2.1.0-alpha.29",
4
4
  "license": "Apache-2.0",
5
5
  "main": "./dist/production/index.js",
6
6
  "typings": "./dist/types/index.d.ts",
@@ -23,21 +23,21 @@
23
23
  }
24
24
  },
25
25
  "dependencies": {
26
- "@contember/authorization": "2.1.0-alpha.28",
27
- "@contember/database": "2.1.0-alpha.28",
28
- "@contember/database-migrations": "2.1.0-alpha.28",
29
- "@contember/dic": "2.1.0-alpha.28",
30
- "@contember/graphql-utils": "2.1.0-alpha.28",
31
- "@contember/logger": "2.1.0-alpha.28",
32
- "@contember/queryable": "2.1.0-alpha.28",
33
- "@contember/schema": "2.1.0-alpha.28",
34
- "@contember/schema-migrations": "2.1.0-alpha.28",
35
- "@contember/schema-utils": "2.1.0-alpha.28",
26
+ "@contember/authorization": "2.1.0-alpha.29",
27
+ "@contember/database": "2.1.0-alpha.29",
28
+ "@contember/database-migrations": "2.1.0-alpha.29",
29
+ "@contember/dic": "2.1.0-alpha.29",
30
+ "@contember/graphql-utils": "2.1.0-alpha.29",
31
+ "@contember/logger": "2.1.0-alpha.29",
32
+ "@contember/queryable": "2.1.0-alpha.29",
33
+ "@contember/schema": "2.1.0-alpha.29",
34
+ "@contember/schema-migrations": "2.1.0-alpha.29",
35
+ "@contember/schema-utils": "2.1.0-alpha.29",
36
36
  "@graphql-tools/utils": "^10.5.5",
37
37
  "graphql-tag": "^2.12.6"
38
38
  },
39
39
  "devDependencies": {
40
- "@contember/schema-definition": "2.1.0-alpha.28",
40
+ "@contember/schema-definition": "2.1.0-alpha.29",
41
41
  "@types/node": "^20.17.22",
42
42
  "graphql": "^16.9.0",
43
43
  "pg": "^8.12.0"
@@ -15,6 +15,11 @@ import { SchemaProvider } from './SchemaProvider'
15
15
  import { SaveSchemaCommand } from '../commands/schema/SaveSchemaCommand'
16
16
  import { ImplementationException } from '../../utils'
17
17
 
18
+ type MigrationVariables = {
19
+ system_schema: string
20
+ project_slug: string
21
+ }
22
+
18
23
  export class ProjectMigrator {
19
24
  constructor(
20
25
  private readonly migrationDescriber: MigrationDescriber,
@@ -64,7 +69,7 @@ export class ProjectMigrator {
64
69
  modification,
65
70
  formatVersion,
66
71
  migration.version,
67
- db.client.schema,
72
+ project,
68
73
  metadataStore,
69
74
  )
70
75
  }
@@ -200,6 +205,13 @@ export class ProjectMigrator {
200
205
  return toExecute
201
206
  }
202
207
 
208
+ private sqlPreprocessor(text: string, variables: MigrationVariables): string {
209
+ return Object.entries(variables).reduce(
210
+ (content, [key, value]) => content.replace(new RegExp(`\\{\\{${key}\\}\\}`, 'g'), value),
211
+ text,
212
+ )
213
+ }
214
+
203
215
  private async applyModification(
204
216
  db: Client,
205
217
  stages: Stage[],
@@ -207,7 +219,7 @@ export class ProjectMigrator {
207
219
  modification: Migration.Modification,
208
220
  formatVersion: number,
209
221
  migrationVersion: string,
210
- systemSchema: string,
222
+ project: { slug: string; systemSchema: string },
211
223
  metadataStore: SchemaDatabaseMetadataResolverStore,
212
224
  ): Promise<[Schema]> {
213
225
  const {
@@ -217,11 +229,15 @@ export class ProjectMigrator {
217
229
  for (const stage of stages) {
218
230
  const databaseMetadata = await metadataStore.getMetadata(stage.schema)
219
231
  const sql = getSql({
220
- systemSchema,
232
+ systemSchema: project.systemSchema,
221
233
  databaseMetadata,
222
234
  invalidateDatabaseMetadata: () => metadataStore.invalidate(stage.schema),
223
235
  })
224
- await this.executeOnStage(db, stage, sql, migrationVersion)
236
+ const processedSql = this.sqlPreprocessor(sql, {
237
+ project_slug: project.slug,
238
+ system_schema: project.systemSchema,
239
+ })
240
+ await this.executeOnStage(db, stage, processedSql, migrationVersion)
225
241
  }
226
242
  return [newSchema]
227
243
  }