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:
Weiko
2023-11-09 20:06:10 +01:00
committed by GitHub
parent 5622f42e7a
commit 1cf08c797f
238 changed files with 1851 additions and 2252 deletions

View File

@ -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,

View File

@ -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);

View File

@ -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);

View File

@ -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,

View File

@ -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);

View File

@ -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);

View File

@ -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',

View File

@ -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>(`

View File

@ -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],
})

View File

@ -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', () => {

View File

@ -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);