From 1e91c985df573e71de3c7b9b602c653531043180 Mon Sep 17 00:00:00 2001 From: Weiko Date: Tue, 3 Oct 2023 10:17:13 +0200 Subject: [PATCH] Add a dedicated GQL server for metadata available on /meta (#1820) --- server/patches/@nestjs+graphql+12.0.8.patch | 41 +++++++++++++++++++ server/src/app.module.ts | 1 + .../services/workspace.service.spec.ts | 2 +- .../workspace/services/workspace.service.ts | 2 +- server/src/core/workspace/workspace.module.ts | 2 +- .../args/create-custom-field.input.ts | 0 .../data-source-metadata.entity.ts | 0 .../data-source-metadata.module.ts | 0 .../data-source-metadata.service.spec.ts | 0 .../data-source-metadata.service.ts | 0 .../data-source/data-source.module.ts | 4 +- .../data-source/data-source.service.spec.ts | 4 +- .../data-source/data-source.service.ts | 6 +-- .../metadata/data-source/data-source.util.ts | 0 .../entity-schema-generator/base.entity.ts | 0 .../entity-schema-generator.module.ts | 2 +- .../entity-schema-generator.service.spec.ts | 2 +- .../entity-schema-generator.service.ts | 2 +- .../entity-schema-generator.util.ts | 0 .../field-metadata/field-metadata.entity.ts | 2 +- .../field-metadata/field-metadata.module.ts | 0 .../field-metadata.service.spec.ts | 0 .../field-metadata/field-metadata.service.ts | 0 .../field-metadata/field-metadata.util.ts | 0 .../metadata/metadata.controller.spec.ts | 0 .../metadata/metadata.controller.ts | 2 +- .../metadata/metadata.datasource.ts | 0 .../{tenant => }/metadata/metadata.module.ts | 13 ++++++ .../metadata/metadata.resolver.spec.ts | 0 .../metadata/metadata.resolver.ts | 7 +++- .../metadata/metadata.service.spec.ts | 0 .../{tenant => }/metadata/metadata.service.ts | 0 .../migration-generator.module.ts | 4 +- .../migration-generator.service.spec.ts | 4 +- .../migration-generator.service.ts | 6 +-- .../1695214465080-InitMetadataTables.ts | 0 ...695717691800-alter-field-metadata-table.ts | 0 .../object-metadata/object-metadata.entity.ts | 2 +- .../object-metadata/object-metadata.module.ts | 0 .../object-metadata.service.spec.ts | 0 .../object-metadata.service.ts | 0 .../tenant-migration.entity.ts | 0 .../tenant-migration.module.ts | 2 +- .../tenant-migration.service.spec.ts | 2 +- .../tenant-migration.service.ts | 2 +- .../entity-resolver/entity-resolver.module.ts | 2 +- .../entity-resolver.service.spec.ts | 2 +- .../entity-resolver.service.ts | 2 +- .../graphql-types/object.graphql-type.ts | 4 +- .../schema-generation.module.ts | 6 +-- .../schema-generation.service.spec.ts | 4 +- .../schema-generation.service.ts | 6 +-- server/src/tenant/tenant.module.ts | 3 +- .../src/tenant/universal/universal.module.ts | 2 +- .../universal/universal.service.spec.ts | 2 +- .../src/tenant/universal/universal.service.ts | 2 +- 56 files changed, 105 insertions(+), 44 deletions(-) create mode 100644 server/patches/@nestjs+graphql+12.0.8.patch rename server/src/{tenant => }/metadata/args/create-custom-field.input.ts (100%) rename server/src/{tenant => }/metadata/data-source-metadata/data-source-metadata.entity.ts (100%) rename server/src/{tenant => }/metadata/data-source-metadata/data-source-metadata.module.ts (100%) rename server/src/{tenant => }/metadata/data-source-metadata/data-source-metadata.service.spec.ts (100%) rename server/src/{tenant => }/metadata/data-source-metadata/data-source-metadata.service.ts (100%) rename server/src/{tenant => }/metadata/data-source/data-source.module.ts (54%) rename server/src/{tenant => }/metadata/data-source/data-source.service.spec.ts (79%) rename server/src/{tenant => }/metadata/data-source/data-source.service.ts (93%) rename server/src/{tenant => }/metadata/data-source/data-source.util.ts (100%) rename server/src/{tenant => }/metadata/entity-schema-generator/base.entity.ts (100%) rename server/src/{tenant => }/metadata/entity-schema-generator/entity-schema-generator.module.ts (75%) rename server/src/{tenant => }/metadata/entity-schema-generator/entity-schema-generator.service.spec.ts (87%) rename server/src/{tenant => }/metadata/entity-schema-generator/entity-schema-generator.service.ts (91%) rename server/src/{tenant => }/metadata/entity-schema-generator/entity-schema-generator.util.ts (100%) rename server/src/{tenant => }/metadata/field-metadata/field-metadata.entity.ts (92%) rename server/src/{tenant => }/metadata/field-metadata/field-metadata.module.ts (100%) rename server/src/{tenant => }/metadata/field-metadata/field-metadata.service.spec.ts (100%) rename server/src/{tenant => }/metadata/field-metadata/field-metadata.service.ts (100%) rename server/src/{tenant => }/metadata/field-metadata/field-metadata.util.ts (100%) rename server/src/{tenant => }/metadata/metadata.controller.spec.ts (100%) rename server/src/{tenant => }/metadata/metadata.controller.ts (98%) rename server/src/{tenant => }/metadata/metadata.datasource.ts (100%) rename server/src/{tenant => }/metadata/metadata.module.ts (78%) rename server/src/{tenant => }/metadata/metadata.resolver.spec.ts (100%) rename server/src/{tenant => }/metadata/metadata.resolver.ts (84%) rename server/src/{tenant => }/metadata/metadata.service.spec.ts (100%) rename server/src/{tenant => }/metadata/metadata.service.ts (100%) rename server/src/{tenant => }/metadata/migration-generator/migration-generator.module.ts (62%) rename server/src/{tenant => }/metadata/migration-generator/migration-generator.service.spec.ts (79%) rename server/src/{tenant => }/metadata/migration-generator/migration-generator.service.ts (95%) rename server/src/{tenant => }/metadata/migrations/1695214465080-InitMetadataTables.ts (100%) rename server/src/{tenant => }/metadata/migrations/1695717691800-alter-field-metadata-table.ts (100%) rename server/src/{tenant => }/metadata/object-metadata/object-metadata.entity.ts (90%) rename server/src/{tenant => }/metadata/object-metadata/object-metadata.module.ts (100%) rename server/src/{tenant => }/metadata/object-metadata/object-metadata.service.spec.ts (100%) rename server/src/{tenant => }/metadata/object-metadata/object-metadata.service.ts (100%) rename server/src/{tenant => }/metadata/tenant-migration/tenant-migration.entity.ts (100%) rename server/src/{tenant => }/metadata/tenant-migration/tenant-migration.module.ts (75%) rename server/src/{tenant => }/metadata/tenant-migration/tenant-migration.service.spec.ts (87%) rename server/src/{tenant => }/metadata/tenant-migration/tenant-migration.service.ts (96%) diff --git a/server/patches/@nestjs+graphql+12.0.8.patch b/server/patches/@nestjs+graphql+12.0.8.patch new file mode 100644 index 000000000..ff918a615 --- /dev/null +++ b/server/patches/@nestjs+graphql+12.0.8.patch @@ -0,0 +1,41 @@ +diff --git a/node_modules/@nestjs/graphql/dist/schema-builder/graphql-schema.factory.js b/node_modules/@nestjs/graphql/dist/schema-builder/graphql-schema.factory.js +index 787bcbc..1c825bd 100644 +--- a/node_modules/@nestjs/graphql/dist/schema-builder/graphql-schema.factory.js ++++ b/node_modules/@nestjs/graphql/dist/schema-builder/graphql-schema.factory.js +@@ -32,6 +32,7 @@ let GraphQLSchemaFactory = exports.GraphQLSchemaFactory = GraphQLSchemaFactory_1 + else { + options = scalarsOrOptions; + } ++ this.typeDefinitionsGenerator.clearTypeDefinitionStorage(); + lazy_metadata_storage_1.LazyMetadataStorage.load(resolvers); + type_metadata_storage_1.TypeMetadataStorage.compile(options.orphanedTypes); + this.typeDefinitionsGenerator.generate(options); +diff --git a/node_modules/@nestjs/graphql/dist/schema-builder/storages/type-definitions.storage.js b/node_modules/@nestjs/graphql/dist/schema-builder/storages/type-definitions.storage.js +index d100444..158c592 100644 +--- a/node_modules/@nestjs/graphql/dist/schema-builder/storages/type-definitions.storage.js ++++ b/node_modules/@nestjs/graphql/dist/schema-builder/storages/type-definitions.storage.js +@@ -81,6 +81,10 @@ let TypeDefinitionsStorage = exports.TypeDefinitionsStorage = class TypeDefiniti + } + return; + } ++ clear() { ++ this.inputTypeDefinitionsLinks = null; ++ this.outputTypeDefinitionsLinks = null; ++ } + }; + exports.TypeDefinitionsStorage = TypeDefinitionsStorage = tslib_1.__decorate([ + (0, common_1.Injectable)() +diff --git a/node_modules/@nestjs/graphql/dist/schema-builder/type-definitions.generator.js b/node_modules/@nestjs/graphql/dist/schema-builder/type-definitions.generator.js +index eb6bcfd..4fbc1ae 100644 +--- a/node_modules/@nestjs/graphql/dist/schema-builder/type-definitions.generator.js ++++ b/node_modules/@nestjs/graphql/dist/schema-builder/type-definitions.generator.js +@@ -26,6 +26,9 @@ let TypeDefinitionsGenerator = exports.TypeDefinitionsGenerator = class TypeDefi + this.generateObjectTypeDefs(options); + this.generateInputTypeDefs(options); + } ++ clearTypeDefinitionStorage() { ++ this.typeDefinitionsStorage.clear(); ++ } + generateInputTypeDefs(options) { + const metadata = type_metadata_storage_1.TypeMetadataStorage.getInputTypesMetadata(); + const inputTypeDefs = metadata.map((metadata) => this.inputTypeDefinitionFactory.create(metadata, options)); diff --git a/server/src/app.module.ts b/server/src/app.module.ts index aaa7512d9..32d386d3b 100644 --- a/server/src/app.module.ts +++ b/server/src/app.module.ts @@ -33,6 +33,7 @@ import { context: ({ req }) => ({ req }), driver: YogaDriver, autoSchemaFile: true, + include: [CoreModule], conditionalSchema: async (request) => { try { // Get the SchemaGenerationService from the AppModule diff --git a/server/src/core/workspace/services/workspace.service.spec.ts b/server/src/core/workspace/services/workspace.service.spec.ts index 85873e0ae..0f8718160 100644 --- a/server/src/core/workspace/services/workspace.service.spec.ts +++ b/server/src/core/workspace/services/workspace.service.spec.ts @@ -8,7 +8,7 @@ import { PersonService } from 'src/core/person/person.service'; import { CompanyService } from 'src/core/company/company.service'; import { PipelineProgressService } from 'src/core/pipeline/services/pipeline-progress.service'; import { ViewService } from 'src/core/view/services/view.service'; -import { DataSourceService } from 'src/tenant/metadata/data-source/data-source.service'; +import { DataSourceService } from 'src/metadata/data-source/data-source.service'; import { WorkspaceService } from './workspace.service'; diff --git a/server/src/core/workspace/services/workspace.service.ts b/server/src/core/workspace/services/workspace.service.ts index f4cc63937..f35fd9b7c 100644 --- a/server/src/core/workspace/services/workspace.service.ts +++ b/server/src/core/workspace/services/workspace.service.ts @@ -11,7 +11,7 @@ import { PipelineService } from 'src/core/pipeline/services/pipeline.service'; import { ViewService } from 'src/core/view/services/view.service'; import { PrismaService } from 'src/database/prisma.service'; import { assert } from 'src/utils/assert'; -import { DataSourceService } from 'src/tenant/metadata/data-source/data-source.service'; +import { DataSourceService } from 'src/metadata/data-source/data-source.service'; @Injectable() export class WorkspaceService { diff --git a/server/src/core/workspace/workspace.module.ts b/server/src/core/workspace/workspace.module.ts index 474636e81..b4c2c3af7 100644 --- a/server/src/core/workspace/workspace.module.ts +++ b/server/src/core/workspace/workspace.module.ts @@ -5,7 +5,7 @@ import { PipelineModule } from 'src/core/pipeline/pipeline.module'; import { CompanyModule } from 'src/core/company/company.module'; import { PersonModule } from 'src/core/person/person.module'; import { ViewModule } from 'src/core/view/view.module'; -import { DataSourceModule } from 'src/tenant/metadata/data-source/data-source.module'; +import { DataSourceModule } from 'src/metadata/data-source/data-source.module'; import { WorkspaceService } from './services/workspace.service'; import { WorkspaceMemberService } from './services/workspace-member.service'; diff --git a/server/src/tenant/metadata/args/create-custom-field.input.ts b/server/src/metadata/args/create-custom-field.input.ts similarity index 100% rename from server/src/tenant/metadata/args/create-custom-field.input.ts rename to server/src/metadata/args/create-custom-field.input.ts diff --git a/server/src/tenant/metadata/data-source-metadata/data-source-metadata.entity.ts b/server/src/metadata/data-source-metadata/data-source-metadata.entity.ts similarity index 100% rename from server/src/tenant/metadata/data-source-metadata/data-source-metadata.entity.ts rename to server/src/metadata/data-source-metadata/data-source-metadata.entity.ts diff --git a/server/src/tenant/metadata/data-source-metadata/data-source-metadata.module.ts b/server/src/metadata/data-source-metadata/data-source-metadata.module.ts similarity index 100% rename from server/src/tenant/metadata/data-source-metadata/data-source-metadata.module.ts rename to server/src/metadata/data-source-metadata/data-source-metadata.module.ts diff --git a/server/src/tenant/metadata/data-source-metadata/data-source-metadata.service.spec.ts b/server/src/metadata/data-source-metadata/data-source-metadata.service.spec.ts similarity index 100% rename from server/src/tenant/metadata/data-source-metadata/data-source-metadata.service.spec.ts rename to server/src/metadata/data-source-metadata/data-source-metadata.service.spec.ts diff --git a/server/src/tenant/metadata/data-source-metadata/data-source-metadata.service.ts b/server/src/metadata/data-source-metadata/data-source-metadata.service.ts similarity index 100% rename from server/src/tenant/metadata/data-source-metadata/data-source-metadata.service.ts rename to server/src/metadata/data-source-metadata/data-source-metadata.service.ts diff --git a/server/src/tenant/metadata/data-source/data-source.module.ts b/server/src/metadata/data-source/data-source.module.ts similarity index 54% rename from server/src/tenant/metadata/data-source/data-source.module.ts rename to server/src/metadata/data-source/data-source.module.ts index 9a108643c..f2641a772 100644 --- a/server/src/tenant/metadata/data-source/data-source.module.ts +++ b/server/src/metadata/data-source/data-source.module.ts @@ -1,7 +1,7 @@ import { Module } from '@nestjs/common'; -import { DataSourceMetadataModule } from 'src/tenant/metadata/data-source-metadata/data-source-metadata.module'; -import { EntitySchemaGeneratorModule } from 'src/tenant/metadata/entity-schema-generator/entity-schema-generator.module'; +import { DataSourceMetadataModule } from 'src/metadata/data-source-metadata/data-source-metadata.module'; +import { EntitySchemaGeneratorModule } from 'src/metadata/entity-schema-generator/entity-schema-generator.module'; import { DataSourceService } from './data-source.service'; diff --git a/server/src/tenant/metadata/data-source/data-source.service.spec.ts b/server/src/metadata/data-source/data-source.service.spec.ts similarity index 79% rename from server/src/tenant/metadata/data-source/data-source.service.spec.ts rename to server/src/metadata/data-source/data-source.service.spec.ts index 61a798b48..f1912eff6 100644 --- a/server/src/tenant/metadata/data-source/data-source.service.spec.ts +++ b/server/src/metadata/data-source/data-source.service.spec.ts @@ -1,8 +1,8 @@ import { Test, TestingModule } from '@nestjs/testing'; import { EnvironmentService } from 'src/integrations/environment/environment.service'; -import { DataSourceMetadataService } from 'src/tenant/metadata/data-source-metadata/data-source-metadata.service'; -import { EntitySchemaGeneratorService } from 'src/tenant/metadata/entity-schema-generator/entity-schema-generator.service'; +import { DataSourceMetadataService } from 'src/metadata/data-source-metadata/data-source-metadata.service'; +import { EntitySchemaGeneratorService } from 'src/metadata/entity-schema-generator/entity-schema-generator.service'; import { DataSourceService } from './data-source.service'; diff --git a/server/src/tenant/metadata/data-source/data-source.service.ts b/server/src/metadata/data-source/data-source.service.ts similarity index 93% rename from server/src/tenant/metadata/data-source/data-source.service.ts rename to server/src/metadata/data-source/data-source.service.ts index 8941e5aa0..74412143a 100644 --- a/server/src/tenant/metadata/data-source/data-source.service.ts +++ b/server/src/metadata/data-source/data-source.service.ts @@ -3,9 +3,9 @@ import { Injectable, OnModuleDestroy, OnModuleInit } from '@nestjs/common'; import { DataSource, QueryRunner, Table } from 'typeorm'; import { EnvironmentService } from 'src/integrations/environment/environment.service'; -import { DataSourceMetadataService } from 'src/tenant/metadata/data-source-metadata/data-source-metadata.service'; -import { EntitySchemaGeneratorService } from 'src/tenant/metadata/entity-schema-generator/entity-schema-generator.service'; -import { TenantMigration } from 'src/tenant/metadata/tenant-migration/tenant-migration.entity'; +import { DataSourceMetadataService } from 'src/metadata/data-source-metadata/data-source-metadata.service'; +import { EntitySchemaGeneratorService } from 'src/metadata/entity-schema-generator/entity-schema-generator.service'; +import { TenantMigration } from 'src/metadata/tenant-migration/tenant-migration.entity'; import { uuidToBase36 } from './data-source.util'; diff --git a/server/src/tenant/metadata/data-source/data-source.util.ts b/server/src/metadata/data-source/data-source.util.ts similarity index 100% rename from server/src/tenant/metadata/data-source/data-source.util.ts rename to server/src/metadata/data-source/data-source.util.ts diff --git a/server/src/tenant/metadata/entity-schema-generator/base.entity.ts b/server/src/metadata/entity-schema-generator/base.entity.ts similarity index 100% rename from server/src/tenant/metadata/entity-schema-generator/base.entity.ts rename to server/src/metadata/entity-schema-generator/base.entity.ts diff --git a/server/src/tenant/metadata/entity-schema-generator/entity-schema-generator.module.ts b/server/src/metadata/entity-schema-generator/entity-schema-generator.module.ts similarity index 75% rename from server/src/tenant/metadata/entity-schema-generator/entity-schema-generator.module.ts rename to server/src/metadata/entity-schema-generator/entity-schema-generator.module.ts index 96f080744..65767de0b 100644 --- a/server/src/tenant/metadata/entity-schema-generator/entity-schema-generator.module.ts +++ b/server/src/metadata/entity-schema-generator/entity-schema-generator.module.ts @@ -1,6 +1,6 @@ import { Module } from '@nestjs/common'; -import { ObjectMetadataModule } from 'src/tenant/metadata/object-metadata/object-metadata.module'; +import { ObjectMetadataModule } from 'src/metadata/object-metadata/object-metadata.module'; import { EntitySchemaGeneratorService } from './entity-schema-generator.service'; diff --git a/server/src/tenant/metadata/entity-schema-generator/entity-schema-generator.service.spec.ts b/server/src/metadata/entity-schema-generator/entity-schema-generator.service.spec.ts similarity index 87% rename from server/src/tenant/metadata/entity-schema-generator/entity-schema-generator.service.spec.ts rename to server/src/metadata/entity-schema-generator/entity-schema-generator.service.spec.ts index 5ca4c0ddc..2ecbfa043 100644 --- a/server/src/tenant/metadata/entity-schema-generator/entity-schema-generator.service.spec.ts +++ b/server/src/metadata/entity-schema-generator/entity-schema-generator.service.spec.ts @@ -1,6 +1,6 @@ import { Test, TestingModule } from '@nestjs/testing'; -import { ObjectMetadataService } from 'src/tenant/metadata/object-metadata/object-metadata.service'; +import { ObjectMetadataService } from 'src/metadata/object-metadata/object-metadata.service'; import { EntitySchemaGeneratorService } from './entity-schema-generator.service'; diff --git a/server/src/tenant/metadata/entity-schema-generator/entity-schema-generator.service.ts b/server/src/metadata/entity-schema-generator/entity-schema-generator.service.ts similarity index 91% rename from server/src/tenant/metadata/entity-schema-generator/entity-schema-generator.service.ts rename to server/src/metadata/entity-schema-generator/entity-schema-generator.service.ts index a0a3ccfce..75067db79 100644 --- a/server/src/tenant/metadata/entity-schema-generator/entity-schema-generator.service.ts +++ b/server/src/metadata/entity-schema-generator/entity-schema-generator.service.ts @@ -2,7 +2,7 @@ import { Injectable } from '@nestjs/common'; import { EntitySchema } from 'typeorm'; -import { ObjectMetadataService } from 'src/tenant/metadata/object-metadata/object-metadata.service'; +import { ObjectMetadataService } from 'src/metadata/object-metadata/object-metadata.service'; import { baseColumns } from './base.entity'; import { diff --git a/server/src/tenant/metadata/entity-schema-generator/entity-schema-generator.util.ts b/server/src/metadata/entity-schema-generator/entity-schema-generator.util.ts similarity index 100% rename from server/src/tenant/metadata/entity-schema-generator/entity-schema-generator.util.ts rename to server/src/metadata/entity-schema-generator/entity-schema-generator.util.ts diff --git a/server/src/tenant/metadata/field-metadata/field-metadata.entity.ts b/server/src/metadata/field-metadata/field-metadata.entity.ts similarity index 92% rename from server/src/tenant/metadata/field-metadata/field-metadata.entity.ts rename to server/src/metadata/field-metadata/field-metadata.entity.ts index a110fedb6..7bafe0537 100644 --- a/server/src/tenant/metadata/field-metadata/field-metadata.entity.ts +++ b/server/src/metadata/field-metadata/field-metadata.entity.ts @@ -8,7 +8,7 @@ import { UpdateDateColumn, } from 'typeorm'; -import { ObjectMetadata } from 'src/tenant/metadata/object-metadata/object-metadata.entity'; +import { ObjectMetadata } from 'src/metadata/object-metadata/object-metadata.entity'; @Entity('field_metadata') export class FieldMetadata { diff --git a/server/src/tenant/metadata/field-metadata/field-metadata.module.ts b/server/src/metadata/field-metadata/field-metadata.module.ts similarity index 100% rename from server/src/tenant/metadata/field-metadata/field-metadata.module.ts rename to server/src/metadata/field-metadata/field-metadata.module.ts diff --git a/server/src/tenant/metadata/field-metadata/field-metadata.service.spec.ts b/server/src/metadata/field-metadata/field-metadata.service.spec.ts similarity index 100% rename from server/src/tenant/metadata/field-metadata/field-metadata.service.spec.ts rename to server/src/metadata/field-metadata/field-metadata.service.spec.ts diff --git a/server/src/tenant/metadata/field-metadata/field-metadata.service.ts b/server/src/metadata/field-metadata/field-metadata.service.ts similarity index 100% rename from server/src/tenant/metadata/field-metadata/field-metadata.service.ts rename to server/src/metadata/field-metadata/field-metadata.service.ts diff --git a/server/src/tenant/metadata/field-metadata/field-metadata.util.ts b/server/src/metadata/field-metadata/field-metadata.util.ts similarity index 100% rename from server/src/tenant/metadata/field-metadata/field-metadata.util.ts rename to server/src/metadata/field-metadata/field-metadata.util.ts diff --git a/server/src/tenant/metadata/metadata.controller.spec.ts b/server/src/metadata/metadata.controller.spec.ts similarity index 100% rename from server/src/tenant/metadata/metadata.controller.spec.ts rename to server/src/metadata/metadata.controller.spec.ts diff --git a/server/src/tenant/metadata/metadata.controller.ts b/server/src/metadata/metadata.controller.ts similarity index 98% rename from server/src/tenant/metadata/metadata.controller.ts rename to server/src/metadata/metadata.controller.ts index 082630a34..5ebb045d2 100644 --- a/server/src/tenant/metadata/metadata.controller.ts +++ b/server/src/metadata/metadata.controller.ts @@ -12,7 +12,7 @@ import { DataSourceService } from './data-source/data-source.service'; import { MigrationGeneratorService } from './migration-generator/migration-generator.service'; @UseGuards(JwtAuthGuard) -@Controller('metadata') +@Controller('metadata_legacy') export class MetadataController { constructor( private readonly entitySchemaGeneratorService: EntitySchemaGeneratorService, diff --git a/server/src/tenant/metadata/metadata.datasource.ts b/server/src/metadata/metadata.datasource.ts similarity index 100% rename from server/src/tenant/metadata/metadata.datasource.ts rename to server/src/metadata/metadata.datasource.ts diff --git a/server/src/tenant/metadata/metadata.module.ts b/server/src/metadata/metadata.module.ts similarity index 78% rename from server/src/tenant/metadata/metadata.module.ts rename to server/src/metadata/metadata.module.ts index 013f7d815..86b334965 100644 --- a/server/src/tenant/metadata/metadata.module.ts +++ b/server/src/metadata/metadata.module.ts @@ -1,5 +1,9 @@ import { Module } from '@nestjs/common'; import { TypeOrmModule, TypeOrmModuleOptions } from '@nestjs/typeorm'; +import { GraphQLModule } from '@nestjs/graphql'; + +import { YogaDriverConfig, YogaDriver } from '@graphql-yoga/nestjs'; +import GraphQLJSON from 'graphql-type-json'; import { MetadataService } from './metadata.service'; import { MetadataController } from './metadata.controller'; @@ -25,6 +29,15 @@ const typeORMFactory = async (): Promise => ({ useFactory: typeORMFactory, name: 'metadata', }), + GraphQLModule.forRoot({ + context: ({ req }) => ({ req }), + driver: YogaDriver, + autoSchemaFile: true, + include: [MetadataModule], + resolvers: { JSON: GraphQLJSON }, + plugins: [], + path: '/metadata', + }), DataSourceModule, DataSourceMetadataModule, FieldMetadataModule, diff --git a/server/src/tenant/metadata/metadata.resolver.spec.ts b/server/src/metadata/metadata.resolver.spec.ts similarity index 100% rename from server/src/tenant/metadata/metadata.resolver.spec.ts rename to server/src/metadata/metadata.resolver.spec.ts diff --git a/server/src/tenant/metadata/metadata.resolver.ts b/server/src/metadata/metadata.resolver.ts similarity index 84% rename from server/src/tenant/metadata/metadata.resolver.ts rename to server/src/metadata/metadata.resolver.ts index 1d08ace2c..4a64a6545 100644 --- a/server/src/tenant/metadata/metadata.resolver.ts +++ b/server/src/metadata/metadata.resolver.ts @@ -1,5 +1,5 @@ import { UseGuards } from '@nestjs/common'; -import { Args, Mutation, Resolver } from '@nestjs/graphql'; +import { Args, Mutation, Query, Resolver } from '@nestjs/graphql'; import { Workspace } from '@prisma/client'; @@ -15,6 +15,11 @@ import { CreateCustomFieldInput } from './args/create-custom-field.input'; export class MetadataResolver { constructor(private readonly metadataService: MetadataService) {} + @Query(() => String) + async hello(): Promise { + return 'Hello World!'; + } + @Mutation(() => String) async createCustomField( @Args() createCustomFieldInput: CreateCustomFieldInput, diff --git a/server/src/tenant/metadata/metadata.service.spec.ts b/server/src/metadata/metadata.service.spec.ts similarity index 100% rename from server/src/tenant/metadata/metadata.service.spec.ts rename to server/src/metadata/metadata.service.spec.ts diff --git a/server/src/tenant/metadata/metadata.service.ts b/server/src/metadata/metadata.service.ts similarity index 100% rename from server/src/tenant/metadata/metadata.service.ts rename to server/src/metadata/metadata.service.ts diff --git a/server/src/tenant/metadata/migration-generator/migration-generator.module.ts b/server/src/metadata/migration-generator/migration-generator.module.ts similarity index 62% rename from server/src/tenant/metadata/migration-generator/migration-generator.module.ts rename to server/src/metadata/migration-generator/migration-generator.module.ts index d03a743ed..90edfb514 100644 --- a/server/src/tenant/metadata/migration-generator/migration-generator.module.ts +++ b/server/src/metadata/migration-generator/migration-generator.module.ts @@ -1,7 +1,7 @@ import { Module } from '@nestjs/common'; -import { DataSourceModule } from 'src/tenant/metadata/data-source/data-source.module'; -import { TenantMigrationModule } from 'src/tenant/metadata/tenant-migration/tenant-migration.module'; +import { DataSourceModule } from 'src/metadata/data-source/data-source.module'; +import { TenantMigrationModule } from 'src/metadata/tenant-migration/tenant-migration.module'; import { MigrationGeneratorService } from './migration-generator.service'; diff --git a/server/src/tenant/metadata/migration-generator/migration-generator.service.spec.ts b/server/src/metadata/migration-generator/migration-generator.service.spec.ts similarity index 79% rename from server/src/tenant/metadata/migration-generator/migration-generator.service.spec.ts rename to server/src/metadata/migration-generator/migration-generator.service.spec.ts index e680b11b0..f6388d6b6 100644 --- a/server/src/tenant/metadata/migration-generator/migration-generator.service.spec.ts +++ b/server/src/metadata/migration-generator/migration-generator.service.spec.ts @@ -1,7 +1,7 @@ import { Test, TestingModule } from '@nestjs/testing'; -import { DataSourceService } from 'src/tenant/metadata/data-source/data-source.service'; -import { TenantMigrationService } from 'src/tenant/metadata/tenant-migration/tenant-migration.service'; +import { DataSourceService } from 'src/metadata/data-source/data-source.service'; +import { TenantMigrationService } from 'src/metadata/tenant-migration/tenant-migration.service'; import { MigrationGeneratorService } from './migration-generator.service'; diff --git a/server/src/tenant/metadata/migration-generator/migration-generator.service.ts b/server/src/metadata/migration-generator/migration-generator.service.ts similarity index 95% rename from server/src/tenant/metadata/migration-generator/migration-generator.service.ts rename to server/src/metadata/migration-generator/migration-generator.service.ts index b37e63874..792c86ff7 100644 --- a/server/src/tenant/metadata/migration-generator/migration-generator.service.ts +++ b/server/src/metadata/migration-generator/migration-generator.service.ts @@ -2,12 +2,12 @@ import { Injectable } from '@nestjs/common'; import { QueryRunner, Table, TableColumn } from 'typeorm'; -import { DataSourceService } from 'src/tenant/metadata/data-source/data-source.service'; +import { DataSourceService } from 'src/metadata/data-source/data-source.service'; import { TenantMigrationTableChange, TenantMigrationColumnChange, -} from 'src/tenant/metadata/tenant-migration/tenant-migration.entity'; -import { TenantMigrationService } from 'src/tenant/metadata/tenant-migration/tenant-migration.service'; +} from 'src/metadata/tenant-migration/tenant-migration.entity'; +import { TenantMigrationService } from 'src/metadata/tenant-migration/tenant-migration.service'; @Injectable() export class MigrationGeneratorService { diff --git a/server/src/tenant/metadata/migrations/1695214465080-InitMetadataTables.ts b/server/src/metadata/migrations/1695214465080-InitMetadataTables.ts similarity index 100% rename from server/src/tenant/metadata/migrations/1695214465080-InitMetadataTables.ts rename to server/src/metadata/migrations/1695214465080-InitMetadataTables.ts diff --git a/server/src/tenant/metadata/migrations/1695717691800-alter-field-metadata-table.ts b/server/src/metadata/migrations/1695717691800-alter-field-metadata-table.ts similarity index 100% rename from server/src/tenant/metadata/migrations/1695717691800-alter-field-metadata-table.ts rename to server/src/metadata/migrations/1695717691800-alter-field-metadata-table.ts diff --git a/server/src/tenant/metadata/object-metadata/object-metadata.entity.ts b/server/src/metadata/object-metadata/object-metadata.entity.ts similarity index 90% rename from server/src/tenant/metadata/object-metadata/object-metadata.entity.ts rename to server/src/metadata/object-metadata/object-metadata.entity.ts index 73732ae31..49ca92973 100644 --- a/server/src/tenant/metadata/object-metadata/object-metadata.entity.ts +++ b/server/src/metadata/object-metadata/object-metadata.entity.ts @@ -7,7 +7,7 @@ import { UpdateDateColumn, } from 'typeorm'; -import { FieldMetadata } from 'src/tenant/metadata/field-metadata/field-metadata.entity'; +import { FieldMetadata } from 'src/metadata/field-metadata/field-metadata.entity'; @Entity('object_metadata') export class ObjectMetadata { diff --git a/server/src/tenant/metadata/object-metadata/object-metadata.module.ts b/server/src/metadata/object-metadata/object-metadata.module.ts similarity index 100% rename from server/src/tenant/metadata/object-metadata/object-metadata.module.ts rename to server/src/metadata/object-metadata/object-metadata.module.ts diff --git a/server/src/tenant/metadata/object-metadata/object-metadata.service.spec.ts b/server/src/metadata/object-metadata/object-metadata.service.spec.ts similarity index 100% rename from server/src/tenant/metadata/object-metadata/object-metadata.service.spec.ts rename to server/src/metadata/object-metadata/object-metadata.service.spec.ts diff --git a/server/src/tenant/metadata/object-metadata/object-metadata.service.ts b/server/src/metadata/object-metadata/object-metadata.service.ts similarity index 100% rename from server/src/tenant/metadata/object-metadata/object-metadata.service.ts rename to server/src/metadata/object-metadata/object-metadata.service.ts diff --git a/server/src/tenant/metadata/tenant-migration/tenant-migration.entity.ts b/server/src/metadata/tenant-migration/tenant-migration.entity.ts similarity index 100% rename from server/src/tenant/metadata/tenant-migration/tenant-migration.entity.ts rename to server/src/metadata/tenant-migration/tenant-migration.entity.ts diff --git a/server/src/tenant/metadata/tenant-migration/tenant-migration.module.ts b/server/src/metadata/tenant-migration/tenant-migration.module.ts similarity index 75% rename from server/src/tenant/metadata/tenant-migration/tenant-migration.module.ts rename to server/src/metadata/tenant-migration/tenant-migration.module.ts index 2ab717cdf..1496d535c 100644 --- a/server/src/tenant/metadata/tenant-migration/tenant-migration.module.ts +++ b/server/src/metadata/tenant-migration/tenant-migration.module.ts @@ -1,6 +1,6 @@ import { Module } from '@nestjs/common'; -import { DataSourceModule } from 'src/tenant/metadata/data-source/data-source.module'; +import { DataSourceModule } from 'src/metadata/data-source/data-source.module'; import { TenantMigrationService } from './tenant-migration.service'; diff --git a/server/src/tenant/metadata/tenant-migration/tenant-migration.service.spec.ts b/server/src/metadata/tenant-migration/tenant-migration.service.spec.ts similarity index 87% rename from server/src/tenant/metadata/tenant-migration/tenant-migration.service.spec.ts rename to server/src/metadata/tenant-migration/tenant-migration.service.spec.ts index 4816110ba..e8aeccf03 100644 --- a/server/src/tenant/metadata/tenant-migration/tenant-migration.service.spec.ts +++ b/server/src/metadata/tenant-migration/tenant-migration.service.spec.ts @@ -1,6 +1,6 @@ import { Test, TestingModule } from '@nestjs/testing'; -import { DataSourceService } from 'src/tenant/metadata/data-source/data-source.service'; +import { DataSourceService } from 'src/metadata/data-source/data-source.service'; import { TenantMigrationService } from './tenant-migration.service'; diff --git a/server/src/tenant/metadata/tenant-migration/tenant-migration.service.ts b/server/src/metadata/tenant-migration/tenant-migration.service.ts similarity index 96% rename from server/src/tenant/metadata/tenant-migration/tenant-migration.service.ts rename to server/src/metadata/tenant-migration/tenant-migration.service.ts index 148b600f2..1806898dc 100644 --- a/server/src/tenant/metadata/tenant-migration/tenant-migration.service.ts +++ b/server/src/metadata/tenant-migration/tenant-migration.service.ts @@ -2,7 +2,7 @@ import { Injectable } from '@nestjs/common'; import { IsNull } from 'typeorm'; -import { DataSourceService } from 'src/tenant/metadata/data-source/data-source.service'; +import { DataSourceService } from 'src/metadata/data-source/data-source.service'; import { TenantMigration, diff --git a/server/src/tenant/entity-resolver/entity-resolver.module.ts b/server/src/tenant/entity-resolver/entity-resolver.module.ts index 9f525ffff..723529b56 100644 --- a/server/src/tenant/entity-resolver/entity-resolver.module.ts +++ b/server/src/tenant/entity-resolver/entity-resolver.module.ts @@ -1,6 +1,6 @@ import { Module } from '@nestjs/common'; -import { DataSourceModule } from 'src/tenant/metadata/data-source/data-source.module'; +import { DataSourceModule } from 'src/metadata/data-source/data-source.module'; import { EntityResolverService } from './entity-resolver.service'; diff --git a/server/src/tenant/entity-resolver/entity-resolver.service.spec.ts b/server/src/tenant/entity-resolver/entity-resolver.service.spec.ts index 96bb0b254..59f1a6b8d 100644 --- a/server/src/tenant/entity-resolver/entity-resolver.service.spec.ts +++ b/server/src/tenant/entity-resolver/entity-resolver.service.spec.ts @@ -1,6 +1,6 @@ import { Test, TestingModule } from '@nestjs/testing'; -import { DataSourceService } from 'src/tenant/metadata/data-source/data-source.service'; +import { DataSourceService } from 'src/metadata/data-source/data-source.service'; import { EnvironmentService } from 'src/integrations/environment/environment.service'; import { EntityResolverService } from './entity-resolver.service'; diff --git a/server/src/tenant/entity-resolver/entity-resolver.service.ts b/server/src/tenant/entity-resolver/entity-resolver.service.ts index e8e189890..2d2967012 100644 --- a/server/src/tenant/entity-resolver/entity-resolver.service.ts +++ b/server/src/tenant/entity-resolver/entity-resolver.service.ts @@ -7,7 +7,7 @@ import { import { GraphQLResolveInfo } from 'graphql'; import graphqlFields from 'graphql-fields'; -import { DataSourceService } from 'src/tenant/metadata/data-source/data-source.service'; +import { DataSourceService } from 'src/metadata/data-source/data-source.service'; import { EnvironmentService } from 'src/integrations/environment/environment.service'; import { convertFieldsToGraphQL } from './entity-resolver.util'; diff --git a/server/src/tenant/schema-generation/graphql-types/object.graphql-type.ts b/server/src/tenant/schema-generation/graphql-types/object.graphql-type.ts index 0b9090fc1..1e4317542 100644 --- a/server/src/tenant/schema-generation/graphql-types/object.graphql-type.ts +++ b/server/src/tenant/schema-generation/graphql-types/object.graphql-type.ts @@ -8,8 +8,8 @@ import { GraphQLString, } from 'graphql'; -import { FieldMetadata } from 'src/tenant/metadata/field-metadata/field-metadata.entity'; -import { ObjectMetadata } from 'src/tenant/metadata/object-metadata/object-metadata.entity'; +import { FieldMetadata } from 'src/metadata/field-metadata/field-metadata.entity'; +import { ObjectMetadata } from 'src/metadata/object-metadata/object-metadata.entity'; import { pascalCase } from 'src/utils/pascal-case'; /** diff --git a/server/src/tenant/schema-generation/schema-generation.module.ts b/server/src/tenant/schema-generation/schema-generation.module.ts index 7340f3bc2..37099884b 100644 --- a/server/src/tenant/schema-generation/schema-generation.module.ts +++ b/server/src/tenant/schema-generation/schema-generation.module.ts @@ -2,9 +2,9 @@ import { Module } from '@nestjs/common'; import { EntityResolverModule } from 'src/tenant/entity-resolver/entity-resolver.module'; import { JwtAuthGuard } from 'src/guards/jwt.auth.guard'; -import { DataSourceMetadataModule } from 'src/tenant/metadata/data-source-metadata/data-source-metadata.module'; -import { EntitySchemaGeneratorModule } from 'src/tenant/metadata/entity-schema-generator/entity-schema-generator.module'; -import { ObjectMetadataModule } from 'src/tenant/metadata/object-metadata/object-metadata.module'; +import { DataSourceMetadataModule } from 'src/metadata/data-source-metadata/data-source-metadata.module'; +import { EntitySchemaGeneratorModule } from 'src/metadata/entity-schema-generator/entity-schema-generator.module'; +import { ObjectMetadataModule } from 'src/metadata/object-metadata/object-metadata.module'; import { SchemaGenerationService } from './schema-generation.service'; diff --git a/server/src/tenant/schema-generation/schema-generation.service.spec.ts b/server/src/tenant/schema-generation/schema-generation.service.spec.ts index bb309e92e..3bfcf4198 100644 --- a/server/src/tenant/schema-generation/schema-generation.service.spec.ts +++ b/server/src/tenant/schema-generation/schema-generation.service.spec.ts @@ -1,7 +1,7 @@ import { Test, TestingModule } from '@nestjs/testing'; -import { DataSourceMetadataService } from 'src/tenant/metadata/data-source-metadata/data-source-metadata.service'; -import { ObjectMetadataService } from 'src/tenant/metadata/object-metadata/object-metadata.service'; +import { DataSourceMetadataService } from 'src/metadata/data-source-metadata/data-source-metadata.service'; +import { ObjectMetadataService } from 'src/metadata/object-metadata/object-metadata.service'; import { EntityResolverService } from 'src/tenant/entity-resolver/entity-resolver.service'; import { SchemaGenerationService } from './schema-generation.service'; diff --git a/server/src/tenant/schema-generation/schema-generation.service.ts b/server/src/tenant/schema-generation/schema-generation.service.ts index 1f06794e6..c7556dd19 100644 --- a/server/src/tenant/schema-generation/schema-generation.service.ts +++ b/server/src/tenant/schema-generation/schema-generation.service.ts @@ -9,10 +9,10 @@ import { } from 'graphql'; import { EntityResolverService } from 'src/tenant/entity-resolver/entity-resolver.service'; -import { DataSourceMetadataService } from 'src/tenant/metadata/data-source-metadata/data-source-metadata.service'; +import { DataSourceMetadataService } from 'src/metadata/data-source-metadata/data-source-metadata.service'; import { pascalCase } from 'src/utils/pascal-case'; -import { ObjectMetadataService } from 'src/tenant/metadata/object-metadata/object-metadata.service'; -import { ObjectMetadata } from 'src/tenant/metadata/object-metadata/object-metadata.entity'; +import { ObjectMetadataService } from 'src/metadata/object-metadata/object-metadata.service'; +import { ObjectMetadata } from 'src/metadata/object-metadata/object-metadata.entity'; import { generateEdgeType } from './graphql-types/edge.graphql-type'; import { generateConnectionType } from './graphql-types/connection.graphql-type'; diff --git a/server/src/tenant/tenant.module.ts b/server/src/tenant/tenant.module.ts index b5a7b8b63..4798cab37 100644 --- a/server/src/tenant/tenant.module.ts +++ b/server/src/tenant/tenant.module.ts @@ -1,6 +1,7 @@ import { Module } from '@nestjs/common'; -import { MetadataModule } from './metadata/metadata.module'; +import { MetadataModule } from 'src/metadata/metadata.module'; + import { UniversalModule } from './universal/universal.module'; import { SchemaGenerationModule } from './schema-generation/schema-generation.module'; diff --git a/server/src/tenant/universal/universal.module.ts b/server/src/tenant/universal/universal.module.ts index f574030a3..edf22bed2 100644 --- a/server/src/tenant/universal/universal.module.ts +++ b/server/src/tenant/universal/universal.module.ts @@ -1,6 +1,6 @@ import { Module } from '@nestjs/common'; -import { DataSourceModule } from 'src/tenant/metadata/data-source/data-source.module'; +import { DataSourceModule } from 'src/metadata/data-source/data-source.module'; import { UniversalService } from './universal.service'; import { UniversalResolver } from './universal.resolver'; diff --git a/server/src/tenant/universal/universal.service.spec.ts b/server/src/tenant/universal/universal.service.spec.ts index 2ab5113f5..c432917d8 100644 --- a/server/src/tenant/universal/universal.service.spec.ts +++ b/server/src/tenant/universal/universal.service.spec.ts @@ -1,6 +1,6 @@ import { Test, TestingModule } from '@nestjs/testing'; -import { DataSourceService } from 'src/tenant/metadata/data-source/data-source.service'; +import { DataSourceService } from 'src/metadata/data-source/data-source.service'; import { EnvironmentService } from 'src/integrations/environment/environment.service'; import { UniversalService } from './universal.service'; diff --git a/server/src/tenant/universal/universal.service.ts b/server/src/tenant/universal/universal.service.ts index c3b2be942..d5aadc0fd 100644 --- a/server/src/tenant/universal/universal.service.ts +++ b/server/src/tenant/universal/universal.service.ts @@ -2,7 +2,7 @@ import { Injectable, InternalServerErrorException } from '@nestjs/common'; import { Workspace } from '@prisma/client'; -import { DataSourceService } from 'src/tenant/metadata/data-source/data-source.service'; +import { DataSourceService } from 'src/metadata/data-source/data-source.service'; import { findManyCursorConnection } from 'src/utils/pagination'; import { UniversalEntity, PaginatedUniversalEntity } from './universal.entity';