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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user