@contember/engine-server 1.1.0-beta.1 → 1.1.0-beta.2

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-server",
3
- "version": "1.1.0-beta.1",
3
+ "version": "1.1.0-beta.2",
4
4
  "license": "Apache-2.0",
5
5
  "main": "dist/src/index.js",
6
6
  "typings": "dist/src/index.d.ts",
@@ -8,24 +8,24 @@
8
8
  "test-e2e": "vitest --no-threads tests/e2e"
9
9
  },
10
10
  "dependencies": {
11
- "@contember/authorization": "^1.1.0-beta.1",
12
- "@contember/config-loader": "^1.1.0-beta.1",
13
- "@contember/database": "^1.1.0-beta.1",
14
- "@contember/database-migrations": "^1.1.0-beta.1",
15
- "@contember/dic": "^1.1.0-beta.1",
16
- "@contember/typesafe": "^1.1.0-beta.1",
17
- "@contember/engine-content-api": "^1.1.0-beta.1",
18
- "@contember/engine-http": "^1.1.0-beta.1",
19
- "@contember/engine-plugins": "^1.1.0-beta.1",
20
- "@contember/engine-s3-plugin": "^1.1.0-beta.1",
21
- "@contember/engine-system-api": "^1.1.0-beta.1",
22
- "@contember/engine-tenant-api": "^1.1.0-beta.1",
23
- "@contember/engine-vimeo-plugin": "^1.1.0-beta.1",
24
- "@contember/queryable": "^1.1.0-beta.1",
25
- "@contember/schema": "^1.1.0-beta.1",
26
- "@contember/schema-definition": "^1.1.0-beta.1",
27
- "@contember/schema-migrations": "^1.1.0-beta.1",
28
- "@contember/schema-utils": "^1.1.0-beta.1",
11
+ "@contember/authorization": "^1.1.0-beta.2",
12
+ "@contember/config-loader": "^1.1.0-beta.2",
13
+ "@contember/database": "^1.1.0-beta.2",
14
+ "@contember/database-migrations": "^1.1.0-beta.2",
15
+ "@contember/dic": "^1.1.0-beta.2",
16
+ "@contember/typesafe": "^1.1.0-beta.2",
17
+ "@contember/engine-content-api": "^1.1.0-beta.2",
18
+ "@contember/engine-http": "^1.1.0-beta.2",
19
+ "@contember/engine-plugins": "^1.1.0-beta.2",
20
+ "@contember/engine-s3-plugin": "^1.1.0-beta.2",
21
+ "@contember/engine-system-api": "^1.1.0-beta.2",
22
+ "@contember/engine-tenant-api": "^1.1.0-beta.2",
23
+ "@contember/engine-vimeo-plugin": "^1.1.0-beta.2",
24
+ "@contember/queryable": "^1.1.0-beta.2",
25
+ "@contember/schema": "^1.1.0-beta.2",
26
+ "@contember/schema-definition": "^1.1.0-beta.2",
27
+ "@contember/schema-migrations": "^1.1.0-beta.2",
28
+ "@contember/schema-utils": "^1.1.0-beta.2",
29
29
  "@koa/cors": "^3.1.0",
30
30
  "@sentry/node": "^6.8.0",
31
31
  "graphql": "^15.4.0",
@@ -37,7 +37,7 @@
37
37
  "uuid": "^8.3.1"
38
38
  },
39
39
  "devDependencies": {
40
- "@contember/engine-api-tester": "^1.1.0-beta.1",
40
+ "@contember/engine-api-tester": "^1.1.0-beta.2",
41
41
  "@types/koa-compress": "^4.0.1",
42
42
  "@types/node": "^17.0.5",
43
43
  "@types/supertest": "^2.0.8",
@@ -1,9 +1,11 @@
1
1
  import { ProjectSchemaResolver as ProjectSchemaResolverInterface } from '@contember/engine-tenant-api'
2
- import { SchemaVersionBuilder } from '@contember/engine-system-api'
2
+ import { SchemaVersionBuilder, VersionedSchema } from '@contember/engine-system-api'
3
3
  import { ProjectContainerResolver } from '@contember/engine-http'
4
4
  import { Schema } from '@contember/schema'
5
5
 
6
6
  export class ProjectSchemaResolver implements ProjectSchemaResolverInterface {
7
+ private schemaCache = new Map<string, VersionedSchema>()
8
+
7
9
  constructor(
8
10
  private readonly projectContainerResolver: ProjectContainerResolver,
9
11
  private readonly schemaVersionBuilder: SchemaVersionBuilder,
@@ -15,7 +17,16 @@ export class ProjectSchemaResolver implements ProjectSchemaResolverInterface {
15
17
  return undefined
16
18
  }
17
19
  const db = container.systemDatabaseContextFactory.create()
18
- return await this.schemaVersionBuilder.buildSchema(db)
20
+ const cachedSchema = this.schemaCache.get(slug)
21
+ const newSchema = await this.schemaVersionBuilder.buildSchema(db, cachedSchema)
22
+ if (cachedSchema !== newSchema) {
23
+ this.schemaCache.set(slug, newSchema)
24
+ }
25
+ return newSchema
26
+ }
27
+
28
+ clearCache() {
29
+ this.schemaCache.clear()
19
30
  }
20
31
  }
21
32
 
@@ -32,4 +43,8 @@ export class ProjectSchemaResolverProxy implements ProjectSchemaResolverInterfac
32
43
  }
33
44
  return this.resolver.getSchema(projectSlug)
34
45
  }
46
+
47
+ clearCache() {
48
+ this.resolver?.clearCache()
49
+ }
35
50
  }