Convert metadata tables to camelCase (#2400)
* Convert metadata tables to camelCase * datasourcemetadataid to datasourceid * refactor metadata folders * fix command * move commands out of metadata * fix seed * rename objectId and fieldId in objectMetadataId and fieldMetadataId in FE * fix field-metadata * Fix * Fix * remove logs --------- Co-authored-by: Charles Bochet <charles@twenty.com>
This commit is contained in:
@ -7,8 +7,8 @@ import {
|
||||
import { SchemaBuilderContext } from 'src/tenant/schema-builder/interfaces/schema-builder-context.interface';
|
||||
import { ResolverBuilderFactoryInterface } from 'src/tenant/resolver-builder/interfaces/resolver-builder-factory.interface';
|
||||
|
||||
import { DataSourceService } from 'src/metadata/data-source/data-source.service';
|
||||
import { PGGraphQLQueryRunner } from 'src/tenant/resolver-builder/pg-graphql/pg-graphql-query-runner';
|
||||
import { TenantDataSourceService } from 'src/tenant-datasource/tenant-datasource.service';
|
||||
|
||||
@Injectable()
|
||||
export class CreateManyResolverFactory
|
||||
@ -16,13 +16,15 @@ export class CreateManyResolverFactory
|
||||
{
|
||||
public static methodName = 'createMany' as const;
|
||||
|
||||
constructor(private readonly dataSourceService: DataSourceService) {}
|
||||
constructor(
|
||||
private readonly tenantDataSourceService: TenantDataSourceService,
|
||||
) {}
|
||||
|
||||
create(context: SchemaBuilderContext): Resolver<CreateManyResolverArgs> {
|
||||
const internalContext = context;
|
||||
|
||||
return (_source, args, context, info) => {
|
||||
const runner = new PGGraphQLQueryRunner(this.dataSourceService, {
|
||||
const runner = new PGGraphQLQueryRunner(this.tenantDataSourceService, {
|
||||
targetTableName: internalContext.targetTableName,
|
||||
workspaceId: internalContext.workspaceId,
|
||||
info,
|
||||
|
||||
@ -7,9 +7,9 @@ import {
|
||||
import { SchemaBuilderContext } from 'src/tenant/schema-builder/interfaces/schema-builder-context.interface';
|
||||
import { ResolverBuilderFactoryInterface } from 'src/tenant/resolver-builder/interfaces/resolver-builder-factory.interface';
|
||||
|
||||
import { DataSourceService } from 'src/metadata/data-source/data-source.service';
|
||||
import { PGGraphQLQueryRunner } from 'src/tenant/resolver-builder/pg-graphql/pg-graphql-query-runner';
|
||||
import { FieldMetadata } from 'src/metadata/field-metadata/field-metadata.entity';
|
||||
import { FieldMetadataEntity } from 'src/database/typeorm/metadata/entities/field-metadata.entity';
|
||||
import { TenantDataSourceService } from 'src/tenant-datasource/tenant-datasource.service';
|
||||
|
||||
@Injectable()
|
||||
export class CreateOneResolverFactory
|
||||
@ -17,18 +17,20 @@ export class CreateOneResolverFactory
|
||||
{
|
||||
public static methodName = 'createOne' as const;
|
||||
|
||||
constructor(private readonly dataSourceService: DataSourceService) {}
|
||||
constructor(
|
||||
private readonly tenantDataSourceService: TenantDataSourceService,
|
||||
) {}
|
||||
|
||||
create(context: SchemaBuilderContext): Resolver<CreateOneResolverArgs> {
|
||||
const internalContext = context;
|
||||
|
||||
return (_source, args, context, info) => {
|
||||
const runner = new PGGraphQLQueryRunner(this.dataSourceService, {
|
||||
const runner = new PGGraphQLQueryRunner(this.tenantDataSourceService, {
|
||||
targetTableName: internalContext.targetTableName,
|
||||
workspaceId: internalContext.workspaceId,
|
||||
info,
|
||||
fieldMetadataCollection:
|
||||
internalContext.fieldMetadataCollection as FieldMetadata[],
|
||||
internalContext.fieldMetadataCollection as FieldMetadataEntity[],
|
||||
});
|
||||
|
||||
return runner.createOne(args);
|
||||
|
||||
@ -7,9 +7,9 @@ import {
|
||||
import { SchemaBuilderContext } from 'src/tenant/schema-builder/interfaces/schema-builder-context.interface';
|
||||
import { ResolverBuilderFactoryInterface } from 'src/tenant/resolver-builder/interfaces/resolver-builder-factory.interface';
|
||||
|
||||
import { DataSourceService } from 'src/metadata/data-source/data-source.service';
|
||||
import { PGGraphQLQueryRunner } from 'src/tenant/resolver-builder/pg-graphql/pg-graphql-query-runner';
|
||||
import { FieldMetadata } from 'src/metadata/field-metadata/field-metadata.entity';
|
||||
import { FieldMetadataEntity } from 'src/database/typeorm/metadata/entities/field-metadata.entity';
|
||||
import { TenantDataSourceService } from 'src/tenant-datasource/tenant-datasource.service';
|
||||
|
||||
@Injectable()
|
||||
export class DeleteOneResolverFactory
|
||||
@ -17,18 +17,20 @@ export class DeleteOneResolverFactory
|
||||
{
|
||||
public static methodName = 'deleteOne' as const;
|
||||
|
||||
constructor(private readonly dataSourceService: DataSourceService) {}
|
||||
constructor(
|
||||
private readonly tenantDataSourceService: TenantDataSourceService,
|
||||
) {}
|
||||
|
||||
create(context: SchemaBuilderContext): Resolver<DeleteOneResolverArgs> {
|
||||
const internalContext = context;
|
||||
|
||||
return (_source, args, context, info) => {
|
||||
const runner = new PGGraphQLQueryRunner(this.dataSourceService, {
|
||||
const runner = new PGGraphQLQueryRunner(this.tenantDataSourceService, {
|
||||
targetTableName: internalContext.targetTableName,
|
||||
workspaceId: internalContext.workspaceId,
|
||||
info,
|
||||
fieldMetadataCollection:
|
||||
internalContext.fieldMetadataCollection as FieldMetadata[],
|
||||
internalContext.fieldMetadataCollection as FieldMetadataEntity[],
|
||||
});
|
||||
|
||||
return runner.deleteOne(args);
|
||||
|
||||
@ -7,8 +7,8 @@ import {
|
||||
import { SchemaBuilderContext } from 'src/tenant/schema-builder/interfaces/schema-builder-context.interface';
|
||||
import { ResolverBuilderFactoryInterface } from 'src/tenant/resolver-builder/interfaces/resolver-builder-factory.interface';
|
||||
|
||||
import { DataSourceService } from 'src/metadata/data-source/data-source.service';
|
||||
import { PGGraphQLQueryRunner } from 'src/tenant/resolver-builder/pg-graphql/pg-graphql-query-runner';
|
||||
import { TenantDataSourceService } from 'src/tenant-datasource/tenant-datasource.service';
|
||||
|
||||
@Injectable()
|
||||
export class FindManyResolverFactory
|
||||
@ -16,13 +16,15 @@ export class FindManyResolverFactory
|
||||
{
|
||||
public static methodName = 'findMany' as const;
|
||||
|
||||
constructor(private readonly dataSourceService: DataSourceService) {}
|
||||
constructor(
|
||||
private readonly tenantDataSourceService: TenantDataSourceService,
|
||||
) {}
|
||||
|
||||
create(context: SchemaBuilderContext): Resolver<FindManyResolverArgs> {
|
||||
const internalContext = context;
|
||||
|
||||
return (_source, args, context, info) => {
|
||||
const runner = new PGGraphQLQueryRunner(this.dataSourceService, {
|
||||
const runner = new PGGraphQLQueryRunner(this.tenantDataSourceService, {
|
||||
targetTableName: internalContext.targetTableName,
|
||||
workspaceId: internalContext.workspaceId,
|
||||
info,
|
||||
|
||||
@ -7,26 +7,28 @@ import {
|
||||
import { SchemaBuilderContext } from 'src/tenant/schema-builder/interfaces/schema-builder-context.interface';
|
||||
import { ResolverBuilderFactoryInterface } from 'src/tenant/resolver-builder/interfaces/resolver-builder-factory.interface';
|
||||
|
||||
import { DataSourceService } from 'src/metadata/data-source/data-source.service';
|
||||
import { PGGraphQLQueryRunner } from 'src/tenant/resolver-builder/pg-graphql/pg-graphql-query-runner';
|
||||
import { FieldMetadata } from 'src/metadata/field-metadata/field-metadata.entity';
|
||||
import { FieldMetadataEntity } from 'src/database/typeorm/metadata/entities/field-metadata.entity';
|
||||
import { TenantDataSourceService } from 'src/tenant-datasource/tenant-datasource.service';
|
||||
|
||||
@Injectable()
|
||||
export class FindOneResolverFactory implements ResolverBuilderFactoryInterface {
|
||||
public static methodName = 'findOne' as const;
|
||||
|
||||
constructor(private readonly dataSourceService: DataSourceService) {}
|
||||
constructor(
|
||||
private readonly tenantDataSourceService: TenantDataSourceService,
|
||||
) {}
|
||||
|
||||
create(context: SchemaBuilderContext): Resolver<FindOneResolverArgs> {
|
||||
const internalContext = context;
|
||||
|
||||
return (_source, args, context, info) => {
|
||||
const runner = new PGGraphQLQueryRunner(this.dataSourceService, {
|
||||
const runner = new PGGraphQLQueryRunner(this.tenantDataSourceService, {
|
||||
targetTableName: internalContext.targetTableName,
|
||||
workspaceId: internalContext.workspaceId,
|
||||
info,
|
||||
fieldMetadataCollection:
|
||||
internalContext.fieldMetadataCollection as FieldMetadata[],
|
||||
internalContext.fieldMetadataCollection as FieldMetadataEntity[],
|
||||
});
|
||||
|
||||
return runner.findOne(args);
|
||||
|
||||
@ -7,9 +7,9 @@ import {
|
||||
import { SchemaBuilderContext } from 'src/tenant/schema-builder/interfaces/schema-builder-context.interface';
|
||||
import { ResolverBuilderFactoryInterface } from 'src/tenant/resolver-builder/interfaces/resolver-builder-factory.interface';
|
||||
|
||||
import { DataSourceService } from 'src/metadata/data-source/data-source.service';
|
||||
import { PGGraphQLQueryRunner } from 'src/tenant/resolver-builder/pg-graphql/pg-graphql-query-runner';
|
||||
import { FieldMetadata } from 'src/metadata/field-metadata/field-metadata.entity';
|
||||
import { FieldMetadataEntity } from 'src/database/typeorm/metadata/entities/field-metadata.entity';
|
||||
import { TenantDataSourceService } from 'src/tenant-datasource/tenant-datasource.service';
|
||||
|
||||
@Injectable()
|
||||
export class UpdateOneResolverFactory
|
||||
@ -17,18 +17,20 @@ export class UpdateOneResolverFactory
|
||||
{
|
||||
public static methodName = 'updateOne' as const;
|
||||
|
||||
constructor(private readonly dataSourceService: DataSourceService) {}
|
||||
constructor(
|
||||
private readonly tenantDataSourceService: TenantDataSourceService,
|
||||
) {}
|
||||
|
||||
create(context: SchemaBuilderContext): Resolver<UpdateOneResolverArgs> {
|
||||
const internalContext = context;
|
||||
|
||||
return (_source, args, context, info) => {
|
||||
const runner = new PGGraphQLQueryRunner(this.dataSourceService, {
|
||||
const runner = new PGGraphQLQueryRunner(this.tenantDataSourceService, {
|
||||
targetTableName: internalContext.targetTableName,
|
||||
workspaceId: internalContext.workspaceId,
|
||||
info,
|
||||
fieldMetadataCollection:
|
||||
internalContext.fieldMetadataCollection as FieldMetadata[],
|
||||
internalContext.fieldMetadataCollection as FieldMetadataEntity[],
|
||||
});
|
||||
|
||||
return runner.updateOne(args);
|
||||
|
||||
@ -1,12 +1,12 @@
|
||||
import { GraphQLResolveInfo } from 'graphql';
|
||||
|
||||
import { FieldMetadataTargetColumnMap } from 'src/metadata/field-metadata/interfaces/field-metadata-target-column-map.interface';
|
||||
import { FieldMetadataTargetColumnMap } from 'src/tenant/schema-builder/interfaces/field-metadata-target-column-map.interface';
|
||||
|
||||
import { FieldMetadata } from 'src/metadata/field-metadata/field-metadata.entity';
|
||||
import {
|
||||
PGGraphQLQueryBuilder,
|
||||
PGGraphQLQueryBuilderOptions,
|
||||
} from 'src/tenant/resolver-builder/pg-graphql/pg-graphql-query-builder';
|
||||
import { FieldMetadataEntity } from 'src/database/typeorm/metadata/entities/field-metadata.entity';
|
||||
|
||||
const testUUID = '123e4567-e89b-12d3-a456-426614174001';
|
||||
|
||||
@ -53,7 +53,7 @@ describe('PGGraphQLQueryBuilder', () => {
|
||||
subField2: 'column_subField2',
|
||||
} as FieldMetadataTargetColumnMap,
|
||||
},
|
||||
] as FieldMetadata[];
|
||||
] as FieldMetadataEntity[];
|
||||
|
||||
mockOptions = {
|
||||
targetTableName: 'TestTable',
|
||||
|
||||
@ -22,8 +22,8 @@ import {
|
||||
PGGraphQLResult,
|
||||
} from 'src/tenant/resolver-builder/interfaces/pg-graphql.interface';
|
||||
|
||||
import { DataSourceService } from 'src/metadata/data-source/data-source.service';
|
||||
import { parseResult } from 'src/tenant/resolver-builder/utils/parse-result.util';
|
||||
import { TenantDataSourceService } from 'src/tenant-datasource/tenant-datasource.service';
|
||||
|
||||
import { PGGraphQLQueryBuilder } from './pg-graphql-query-builder';
|
||||
|
||||
@ -43,7 +43,7 @@ export class PGGraphQLQueryRunner<
|
||||
private options: QueryRunnerOptions;
|
||||
|
||||
constructor(
|
||||
private dataSourceService: DataSourceService,
|
||||
private tenantDataSourceService: TenantDataSourceService,
|
||||
options: QueryRunnerOptions,
|
||||
) {
|
||||
this.queryBuilder = new PGGraphQLQueryBuilder({
|
||||
@ -59,10 +59,14 @@ export class PGGraphQLQueryRunner<
|
||||
workspaceId: string,
|
||||
): Promise<PGGraphQLResult | undefined> {
|
||||
const workspaceDataSource =
|
||||
await this.dataSourceService.connectToWorkspaceDataSource(workspaceId);
|
||||
await this.tenantDataSourceService.connectToWorkspaceDataSource(
|
||||
workspaceId,
|
||||
);
|
||||
|
||||
await workspaceDataSource?.query(`
|
||||
SET search_path TO ${this.dataSourceService.getSchemaName(workspaceId)};
|
||||
SET search_path TO ${this.tenantDataSourceService.getSchemaName(
|
||||
workspaceId,
|
||||
)};
|
||||
`);
|
||||
|
||||
return workspaceDataSource?.query<PGGraphQLResult>(`
|
||||
|
||||
@ -1,13 +1,13 @@
|
||||
import { Module } from '@nestjs/common';
|
||||
|
||||
import { DataSourceModule } from 'src/metadata/data-source/data-source.module';
|
||||
import { TenantDataSourceModule } from 'src/tenant-datasource/tenant-datasource.module';
|
||||
|
||||
import { ResolverFactory } from './resolver.factory';
|
||||
|
||||
import { resolverBuilderFactories } from './factories/factories';
|
||||
|
||||
@Module({
|
||||
imports: [DataSourceModule],
|
||||
imports: [TenantDataSourceModule],
|
||||
providers: [...resolverBuilderFactories, ResolverFactory],
|
||||
exports: [ResolverFactory],
|
||||
})
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
import { FieldMetadataTargetColumnMap } from 'src/metadata/field-metadata/interfaces/field-metadata-target-column-map.interface';
|
||||
import { FieldMetadataTargetColumnMap } from 'src/tenant/schema-builder/interfaces/field-metadata-target-column-map.interface';
|
||||
|
||||
import {
|
||||
FieldMetadata,
|
||||
FieldMetadataEntity,
|
||||
FieldMetadataType,
|
||||
} from 'src/metadata/field-metadata/field-metadata.entity';
|
||||
} from 'src/database/typeorm/metadata/entities/field-metadata.entity';
|
||||
import { convertArguments } from 'src/tenant/resolver-builder/utils/convert-arguments.util';
|
||||
|
||||
describe('convertArguments', () => {
|
||||
@ -33,7 +33,7 @@ describe('convertArguments', () => {
|
||||
} as FieldMetadataTargetColumnMap,
|
||||
type: FieldMetadataType.URL,
|
||||
},
|
||||
] as FieldMetadata[];
|
||||
] as FieldMetadataEntity[];
|
||||
});
|
||||
|
||||
test('should handle non-array arguments', () => {
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import { FieldMetadataTargetColumnMap } from 'src/metadata/field-metadata/interfaces/field-metadata-target-column-map.interface';
|
||||
import { FieldMetadataTargetColumnMap } from 'src/tenant/schema-builder/interfaces/field-metadata-target-column-map.interface';
|
||||
|
||||
import { FieldMetadata } from 'src/metadata/field-metadata/field-metadata.entity';
|
||||
import { convertFieldsToGraphQL } from 'src/tenant/resolver-builder/utils/convert-fields-to-graphql.util';
|
||||
import { FieldMetadataEntity } from 'src/database/typeorm/metadata/entities/field-metadata.entity';
|
||||
|
||||
const normalizeWhitespace = (str) => str.replace(/\s+/g, ' ').trim();
|
||||
|
||||
@ -23,7 +23,7 @@ describe('convertFieldsToGraphQL', () => {
|
||||
text: 'column_RANDOMSTRING3',
|
||||
} as FieldMetadataTargetColumnMap,
|
||||
},
|
||||
] as FieldMetadata[];
|
||||
] as FieldMetadataEntity[];
|
||||
});
|
||||
|
||||
test('should handle simple fields correctly', () => {
|
||||
@ -75,7 +75,7 @@ describe('convertFieldsToGraphQL', () => {
|
||||
const emptyField = {
|
||||
name: 'emptyField',
|
||||
targetColumnMap: {},
|
||||
} as FieldMetadata;
|
||||
} as FieldMetadataEntity;
|
||||
|
||||
fields.push(emptyField);
|
||||
|
||||
|
||||
@ -6,8 +6,8 @@ import { BuildSchemaOptions } from 'src/tenant/schema-builder/interfaces/build-s
|
||||
import { ObjectMetadataInterface } from 'src/tenant/schema-builder/interfaces/object-metadata.interface';
|
||||
|
||||
import { pascalCase } from 'src/utils/pascal-case';
|
||||
import { FieldMetadata } from 'src/metadata/field-metadata/field-metadata.entity';
|
||||
import { TypeMapperService } from 'src/tenant/schema-builder/services/type-mapper.service';
|
||||
import { FieldMetadataEntity } from 'src/database/typeorm/metadata/entities/field-metadata.entity';
|
||||
|
||||
import { FilterTypeFactory } from './filter-type.factory';
|
||||
import {
|
||||
@ -67,7 +67,7 @@ export class FilterTypeDefinitionFactory {
|
||||
): GraphQLInputFieldConfigMap {
|
||||
const fields: GraphQLInputFieldConfigMap = {};
|
||||
|
||||
objectMetadata.fields.forEach((fieldMetadata: FieldMetadata) => {
|
||||
objectMetadata.fields.forEach((fieldMetadata: FieldMetadataEntity) => {
|
||||
const type = this.filterTypeFactory.create(fieldMetadata, options, {
|
||||
nullable: fieldMetadata.isNullable,
|
||||
});
|
||||
|
||||
@ -6,7 +6,7 @@ import { BuildSchemaOptions } from 'src/tenant/schema-builder/interfaces/build-s
|
||||
import { ObjectMetadataInterface } from 'src/tenant/schema-builder/interfaces/object-metadata.interface';
|
||||
|
||||
import { pascalCase } from 'src/utils/pascal-case';
|
||||
import { FieldMetadata } from 'src/metadata/field-metadata/field-metadata.entity';
|
||||
import { FieldMetadataEntity } from 'src/database/typeorm/metadata/entities/field-metadata.entity';
|
||||
|
||||
import { InputTypeFactory } from './input-type.factory';
|
||||
|
||||
@ -52,7 +52,7 @@ export class InputTypeDefinitionFactory {
|
||||
): GraphQLInputFieldConfigMap {
|
||||
const fields: GraphQLInputFieldConfigMap = {};
|
||||
|
||||
objectMetadata.fields.forEach((fieldMetadata: FieldMetadata) => {
|
||||
objectMetadata.fields.forEach((fieldMetadata: FieldMetadataEntity) => {
|
||||
const type = this.inputTypeFactory.create(fieldMetadata, kind, options, {
|
||||
nullable: fieldMetadata.isNullable,
|
||||
});
|
||||
|
||||
@ -5,8 +5,8 @@ import { GraphQLFieldConfigMap, GraphQLObjectType } from 'graphql';
|
||||
import { BuildSchemaOptions } from 'src/tenant/schema-builder/interfaces/build-schema-optionts.interface';
|
||||
import { ObjectMetadataInterface } from 'src/tenant/schema-builder/interfaces/object-metadata.interface';
|
||||
|
||||
import { FieldMetadata } from 'src/metadata/field-metadata/field-metadata.entity';
|
||||
import { pascalCase } from 'src/utils/pascal-case';
|
||||
import { FieldMetadataEntity } from 'src/database/typeorm/metadata/entities/field-metadata.entity';
|
||||
|
||||
import { OutputTypeFactory } from './output-type.factory';
|
||||
|
||||
@ -49,7 +49,7 @@ export class ObjectTypeDefinitionFactory {
|
||||
): GraphQLFieldConfigMap<any, any> {
|
||||
const fields: GraphQLFieldConfigMap<any, any> = {};
|
||||
|
||||
objectMetadata.fields.forEach((fieldMetadata: FieldMetadata) => {
|
||||
objectMetadata.fields.forEach((fieldMetadata: FieldMetadataEntity) => {
|
||||
const type = this.outputTypeFactory.create(fieldMetadata, kind, options, {
|
||||
nullable: fieldMetadata.isNullable,
|
||||
});
|
||||
|
||||
@ -6,7 +6,7 @@ import { BuildSchemaOptions } from 'src/tenant/schema-builder/interfaces/build-s
|
||||
import { ObjectMetadataInterface } from 'src/tenant/schema-builder/interfaces/object-metadata.interface';
|
||||
|
||||
import { pascalCase } from 'src/utils/pascal-case';
|
||||
import { FieldMetadata } from 'src/metadata/field-metadata/field-metadata.entity';
|
||||
import { FieldMetadataEntity } from 'src/database/typeorm/metadata/entities/field-metadata.entity';
|
||||
|
||||
import {
|
||||
InputTypeDefinition,
|
||||
@ -43,7 +43,7 @@ export class OrderByTypeDefinitionFactory {
|
||||
): GraphQLInputFieldConfigMap {
|
||||
const fields: GraphQLInputFieldConfigMap = {};
|
||||
|
||||
objectMetadata.fields.forEach((fieldMetadata: FieldMetadata) => {
|
||||
objectMetadata.fields.forEach((fieldMetadata: FieldMetadataEntity) => {
|
||||
const type = this.orderByTypeFactory.create(fieldMetadata, options, {
|
||||
nullable: fieldMetadata.isNullable,
|
||||
});
|
||||
|
||||
@ -4,7 +4,7 @@ import { GraphQLSchema } from 'graphql';
|
||||
|
||||
import { ResolverBuilderMethods } from 'src/tenant/resolver-builder/interfaces/resolvers-builder.interface';
|
||||
|
||||
import { ObjectMetadataService } from 'src/metadata/object-metadata/services/object-metadata.service';
|
||||
import { ObjectMetadataService } from 'src/metadata/object-metadata/object-metadata.service';
|
||||
|
||||
import { TypeDefinitionsGenerator } from './type-definitions.generator';
|
||||
|
||||
|
||||
@ -0,0 +1,35 @@
|
||||
import { FieldMetadataType } from 'src/database/typeorm/metadata/entities/field-metadata.entity';
|
||||
|
||||
export interface FieldMetadataTargetColumnMapValue {
|
||||
value: string;
|
||||
}
|
||||
|
||||
export interface FieldMetadataTargetColumnMapUrl {
|
||||
text: string;
|
||||
link: string;
|
||||
}
|
||||
|
||||
export interface FieldMetadataTargetColumnMapMoney {
|
||||
amount: number;
|
||||
currency: string;
|
||||
}
|
||||
|
||||
type AllFieldMetadataTypes = {
|
||||
[key: string]: any;
|
||||
};
|
||||
|
||||
type FieldMetadataTypeMapping = {
|
||||
[FieldMetadataType.URL]: FieldMetadataTargetColumnMapUrl;
|
||||
[FieldMetadataType.MONEY]: FieldMetadataTargetColumnMapMoney;
|
||||
};
|
||||
|
||||
type TypeByFieldMetadata<T extends FieldMetadataType | 'default'> =
|
||||
T extends keyof FieldMetadataTypeMapping
|
||||
? FieldMetadataTypeMapping[T]
|
||||
: T extends 'default'
|
||||
? AllFieldMetadataTypes
|
||||
: FieldMetadataTargetColumnMapValue;
|
||||
|
||||
export type FieldMetadataTargetColumnMap<
|
||||
T extends FieldMetadataType | 'default' = 'default',
|
||||
> = TypeByFieldMetadata<T>;
|
||||
@ -1,6 +1,6 @@
|
||||
import { FieldMetadataTargetColumnMap } from 'src/metadata/field-metadata/interfaces/field-metadata-target-column-map.interface';
|
||||
import { FieldMetadataType } from 'src/database/typeorm/metadata/entities/field-metadata.entity';
|
||||
|
||||
import { FieldMetadataType } from 'src/metadata/field-metadata/field-metadata.entity';
|
||||
import { FieldMetadataTargetColumnMap } from './field-metadata-target-column-map.interface';
|
||||
|
||||
export interface FieldMetadataInterface<
|
||||
T extends FieldMetadataType | 'default' = 'default',
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import { InputTypeDefinitionKind } from 'src/tenant/schema-builder/factories/input-type-definition.factory';
|
||||
import { FieldMetadataType } from 'src/metadata/field-metadata/field-metadata.entity';
|
||||
import { FieldMetadataType } from 'src/database/typeorm/metadata/entities/field-metadata.entity';
|
||||
|
||||
import { ObjectMetadataInterface } from './object-metadata.interface';
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import { ObjectMetadataInterface } from 'src/tenant/schema-builder/interfaces/object-metadata.interface';
|
||||
|
||||
import { FieldMetadataType } from 'src/metadata/field-metadata/field-metadata.entity';
|
||||
import { FieldMetadataType } from 'src/database/typeorm/metadata/entities/field-metadata.entity';
|
||||
|
||||
export const moneyObjectDefinition = {
|
||||
id: FieldMetadataType.MONEY.toString(),
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import { ObjectMetadataInterface } from 'src/tenant/schema-builder/interfaces/object-metadata.interface';
|
||||
|
||||
import { FieldMetadataType } from 'src/metadata/field-metadata/field-metadata.entity';
|
||||
import { FieldMetadataType } from 'src/database/typeorm/metadata/entities/field-metadata.entity';
|
||||
|
||||
export const urlObjectDefinition = {
|
||||
id: FieldMetadataType.URL.toString(),
|
||||
|
||||
@ -21,7 +21,6 @@ import {
|
||||
NumberScalarMode,
|
||||
} from 'src/tenant/schema-builder/interfaces/build-schema-optionts.interface';
|
||||
|
||||
import { FieldMetadataType } from 'src/metadata/field-metadata/field-metadata.entity';
|
||||
import {
|
||||
UUIDFilterType,
|
||||
StringFilterType,
|
||||
@ -31,6 +30,7 @@ import {
|
||||
IntFilterType,
|
||||
} from 'src/tenant/schema-builder/graphql-types/input';
|
||||
import { OrderByDirectionType } from 'src/tenant/schema-builder/graphql-types/enum';
|
||||
import { FieldMetadataType } from 'src/database/typeorm/metadata/entities/field-metadata.entity';
|
||||
|
||||
export interface TypeOptions<T = any> {
|
||||
nullable?: boolean;
|
||||
|
||||
@ -2,7 +2,7 @@ import { Injectable } from '@nestjs/common';
|
||||
|
||||
import { GraphQLInputObjectType, GraphQLObjectType } from 'graphql';
|
||||
|
||||
import { FieldMetadataType } from 'src/metadata/field-metadata/field-metadata.entity';
|
||||
import { FieldMetadataType } from 'src/database/typeorm/metadata/entities/field-metadata.entity';
|
||||
import {
|
||||
InputTypeDefinition,
|
||||
InputTypeDefinitionKind,
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import { Injectable, Logger } from '@nestjs/common';
|
||||
|
||||
import { FieldMetadata } from 'src/metadata/field-metadata/field-metadata.entity';
|
||||
import { customTableDefaultColumns } from 'src/metadata/migration-runner/custom-table-default-column.util';
|
||||
import { customTableDefaultColumns } from 'src/tenant-migration-runner/utils/custom-table-default-column.util';
|
||||
import { FieldMetadataEntity } from 'src/database/typeorm/metadata/entities/field-metadata.entity';
|
||||
|
||||
import { TypeDefinitionsStorage } from './storages/type-definitions.storage';
|
||||
import {
|
||||
@ -29,7 +29,7 @@ const defaultFields = customTableDefaultColumns.map((column) => {
|
||||
type: getFieldMetadataType(column.type),
|
||||
name: column.name,
|
||||
isNullable: true,
|
||||
} as FieldMetadata;
|
||||
} as FieldMetadataEntity;
|
||||
});
|
||||
|
||||
@Injectable()
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import { FieldMetadataType } from 'src/metadata/field-metadata/field-metadata.entity';
|
||||
import { FieldMetadataType } from 'src/database/typeorm/metadata/entities/field-metadata.entity';
|
||||
import { getFieldMetadataType } from 'src/tenant/schema-builder/utils/get-field-metadata-type.util';
|
||||
|
||||
describe('getFieldMetadataType', () => {
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import { ResolverBuilderMethodNames } from 'src/tenant/resolver-builder/interfaces/resolvers-builder.interface';
|
||||
|
||||
import { FieldMetadataType } from 'src/metadata/field-metadata/field-metadata.entity';
|
||||
import { FieldMetadataType } from 'src/database/typeorm/metadata/entities/field-metadata.entity';
|
||||
import { InputTypeDefinitionKind } from 'src/tenant/schema-builder/factories/input-type-definition.factory';
|
||||
import { getResolverArgs } from 'src/tenant/schema-builder/utils/get-resolver-args.util';
|
||||
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import { FieldMetadataType } from 'src/metadata/field-metadata/field-metadata.entity';
|
||||
import { FieldMetadataType } from 'src/database/typeorm/metadata/entities/field-metadata.entity';
|
||||
|
||||
const typeOrmTypeMapping = new Map<string, FieldMetadataType>([
|
||||
['uuid', FieldMetadataType.UUID],
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
import { ResolverBuilderMethodNames } from 'src/tenant/resolver-builder/interfaces/resolvers-builder.interface';
|
||||
import { ArgMetadata } from 'src/tenant/schema-builder/interfaces/param-metadata.interface';
|
||||
|
||||
import { FieldMetadataType } from 'src/metadata/field-metadata/field-metadata.entity';
|
||||
import { InputTypeDefinitionKind } from 'src/tenant/schema-builder/factories/input-type-definition.factory';
|
||||
import { FieldMetadataType } from 'src/database/typeorm/metadata/entities/field-metadata.entity';
|
||||
|
||||
export const getResolverArgs = (
|
||||
type: ResolverBuilderMethodNames,
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import { Test, TestingModule } from '@nestjs/testing';
|
||||
|
||||
import { DataSourceMetadataService } from 'src/metadata/data-source-metadata/data-source-metadata.service';
|
||||
import { ObjectMetadataService } from 'src/metadata/object-metadata/services/object-metadata.service';
|
||||
import { ObjectMetadataService } from 'src/metadata/object-metadata/object-metadata.service';
|
||||
|
||||
import { TenantService } from './tenant.service';
|
||||
|
||||
|
||||
@ -6,7 +6,7 @@ import { makeExecutableSchema } from '@graphql-tools/schema';
|
||||
import { gql } from 'graphql-tag';
|
||||
|
||||
import { DataSourceMetadataService } from 'src/metadata/data-source-metadata/data-source-metadata.service';
|
||||
import { ObjectMetadataService } from 'src/metadata/object-metadata/services/object-metadata.service';
|
||||
import { ObjectMetadataService } from 'src/metadata/object-metadata/object-metadata.service';
|
||||
|
||||
import { GraphQLSchemaFactory } from './schema-builder/graphql-schema.factory';
|
||||
import { resolverBuilderMethodNames } from './resolver-builder/factories/factories';
|
||||
@ -31,7 +31,7 @@ export class TenantService {
|
||||
workspaceId,
|
||||
);
|
||||
|
||||
// Can'f find any data sources for this workspace
|
||||
// Can't find any data sources for this workspace
|
||||
if (!dataSourcesMetadata || dataSourcesMetadata.length === 0) {
|
||||
return new GraphQLSchema({});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user