Convert metadata tables to camel_case (#2420)

* Convert metadata tables to camelcase

* refactor folder structure

* rename datasourcemetadata

* regenerate metadata schema

* rename dataSourceMetadata to dataSource
This commit is contained in:
Weiko
2023-11-10 15:33:25 +01:00
committed by GitHub
parent 6e7ad5eabc
commit 04c618284f
98 changed files with 1189 additions and 1735 deletions

View File

@ -66,7 +66,7 @@ export class CompositeFieldAliasFactory {
const targetTableName = relationMetadata.toObjectMetadata.targetTableName;
const relationDirection = deduceRelationDirection(
fieldMetadata.objectId,
fieldMetadata.objectMetadataId,
relationMetadata,
);

View File

@ -1,12 +1,12 @@
import { Module } from '@nestjs/common';
import { QueryBuilderModule } from 'src/tenant/query-builder/query-builder.module';
import { DataSourceModule } from 'src/metadata/data-source/data-source.module';
import { TenantDataSourceModule } from 'src/tenant-datasource/tenant-datasource.module';
import { QueryRunnerService } from './query-runner.service';
@Module({
imports: [QueryBuilderModule, DataSourceModule],
imports: [QueryBuilderModule, TenantDataSourceModule],
providers: [QueryRunnerService],
exports: [QueryRunnerService],
})

View File

@ -16,8 +16,8 @@ import {
} from 'src/tenant/query-builder/interfaces/resolvers-builder.interface';
import { QueryBuilderFactory } from 'src/tenant/query-builder/query-builder.factory';
import { DataSourceService } from 'src/metadata/data-source/data-source.service';
import { parseResult } from 'src/tenant/query-runner/utils/parse-result.util';
import { TenantDataSourceService } from 'src/tenant-datasource/tenant-datasource.service';
import { QueryRunnerOptions } from './interfaces/query-runner-optionts.interface';
import {
@ -31,7 +31,7 @@ export class QueryRunnerService {
constructor(
private readonly queryBuilderFactory: QueryBuilderFactory,
private readonly dataSourceService: DataSourceService,
private readonly tenantDataSourceService: TenantDataSourceService,
) {}
async findMany<
@ -130,10 +130,14 @@ export class QueryRunnerService {
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

@ -134,7 +134,7 @@ export class ExtendObjectTypeDefinitionFactory {
}
const relationDirection = deduceRelationDirection(
fieldMetadata.objectId,
fieldMetadata.objectMetadataId,
relationMetadata,
);
const relationType = this.relationTypeFactory.create(

View File

@ -0,0 +1,35 @@
import { FieldMetadataType } from 'src/metadata/field-metadata/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>;

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 { FieldMetadataType } from 'src/metadata/field-metadata/field-metadata.entity';
import { RelationMetadata } from 'src/metadata/relation-metadata/relation-metadata.entity';
import { RelationMetadataEntity } from 'src/metadata/relation-metadata/relation-metadata.entity';
export interface FieldMetadataInterface<
T extends FieldMetadataType | 'default' = 'default',
@ -11,9 +11,9 @@ export interface FieldMetadataInterface<
name: string;
label: string;
targetColumnMap: FieldMetadataTargetColumnMap<T>;
objectId: string;
objectMetadataId: string;
description?: string;
isNullable?: boolean;
fromRelationMetadata?: RelationMetadata;
toRelationMetadata?: RelationMetadata;
fromRelationMetadata?: RelationMetadataEntity;
toRelationMetadata?: RelationMetadataEntity;
}

View File

@ -1,4 +1,5 @@
import { ObjectMetadataInterface } from 'src/tenant/schema-builder/interfaces/object-metadata.interface';
import { FieldMetadataInterface } from 'src/tenant/schema-builder/interfaces/field-metadata.interface';
import { FieldMetadataType } from 'src/metadata/field-metadata/field-metadata.entity';
@ -13,21 +14,21 @@ export const moneyObjectDefinition = {
{
id: 'amount',
type: FieldMetadataType.NUMBER,
objectId: FieldMetadataType.MONEY.toString(),
objectMetadataId: FieldMetadataType.MONEY.toString(),
name: 'amount',
label: 'Amount',
targetColumnMap: { value: 'amount' },
isNullable: true,
},
} satisfies FieldMetadataInterface,
{
id: 'currency',
type: FieldMetadataType.TEXT,
objectId: FieldMetadataType.MONEY.toString(),
objectMetadataId: FieldMetadataType.MONEY.toString(),
name: 'currency',
label: 'Currency',
targetColumnMap: { value: 'currency' },
},
} satisfies FieldMetadataInterface,
],
fromRelations: [],
toRelations: [],
} as ObjectMetadataInterface;
} satisfies ObjectMetadataInterface;

View File

@ -1,4 +1,5 @@
import { ObjectMetadataInterface } from 'src/tenant/schema-builder/interfaces/object-metadata.interface';
import { FieldMetadataInterface } from 'src/tenant/schema-builder/interfaces/field-metadata.interface';
import { FieldMetadataType } from 'src/metadata/field-metadata/field-metadata.entity';
@ -13,20 +14,20 @@ export const urlObjectDefinition = {
{
id: 'text',
type: FieldMetadataType.TEXT,
objectId: FieldMetadataType.URL.toString(),
objectMetadataId: FieldMetadataType.URL.toString(),
name: 'text',
label: 'Text',
targetColumnMap: { value: 'text' },
},
} satisfies FieldMetadataInterface,
{
id: 'link',
type: FieldMetadataType.TEXT,
objectId: FieldMetadataType.URL.toString(),
objectMetadataId: FieldMetadataType.URL.toString(),
name: 'link',
label: 'Link',
targetColumnMap: { value: 'link' },
},
} satisfies FieldMetadataInterface,
],
fromRelations: [],
toRelations: [],
} as ObjectMetadataInterface;
} satisfies ObjectMetadataInterface;

View File

@ -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 { FieldMetadataEntity } from 'src/metadata/field-metadata/field-metadata.entity';
import { customTableDefaultColumns } from 'src/tenant-migration-runner/utils/custom-table-default-column.util';
import { TypeDefinitionsStorage } from './storages/type-definitions.storage';
import {
@ -31,7 +31,7 @@ const defaultFields = customTableDefaultColumns.map((column) => {
type: getFieldMetadataType(column.type),
name: column.name,
isNullable: true,
} as FieldMetadata;
} as FieldMetadataEntity;
});
@Injectable()

View File

@ -1,7 +1,7 @@
import { Module } from '@nestjs/common';
import { MetadataModule } from 'src/metadata/metadata.module';
import { DataSourceMetadataModule } from 'src/metadata/data-source-metadata/data-source-metadata.module';
import { DataSourceModule } from 'src/metadata/data-source/data-source.module';
import { ObjectMetadataModule } from 'src/metadata/object-metadata/object-metadata.module';
import { TenantService } from './tenant.service';
@ -12,7 +12,7 @@ import { ResolverBuilderModule } from './resolver-builder/resolver-builder.modul
@Module({
imports: [
MetadataModule,
DataSourceMetadataModule,
DataSourceModule,
ObjectMetadataModule,
SchemaBuilderModule,
ResolverBuilderModule,

View File

@ -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 { DataSourceService } from 'src/metadata/data-source/data-source.service';
import { ObjectMetadataService } from 'src/metadata/object-metadata/object-metadata.service';
import { TenantService } from './tenant.service';
@ -16,7 +16,7 @@ describe('TenantService', () => {
providers: [
TenantService,
{
provide: DataSourceMetadataService,
provide: DataSourceService,
useValue: {},
},
{

View File

@ -5,8 +5,8 @@ import { GraphQLSchema, printSchema } from 'graphql';
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 { DataSourceService } from 'src/metadata/data-source/data-source.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';
@ -15,7 +15,7 @@ import { ResolverFactory } from './resolver-builder/resolver.factory';
@Injectable()
export class TenantService {
constructor(
private readonly dataSourceMetadataService: DataSourceMetadataService,
private readonly dataSourceService: DataSourceService,
private readonly objectMetadataService: ObjectMetadataService,
private readonly graphQLSchemaFactory: GraphQLSchemaFactory,
private readonly resolverFactory: ResolverFactory,
@ -27,7 +27,7 @@ export class TenantService {
}
const dataSourcesMetadata =
await this.dataSourceMetadataService.getDataSourcesMetadataFromWorkspaceId(
await this.dataSourceService.getDataSourcesMetadataFromWorkspaceId(
workspaceId,
);