* feat: wip conditional schema based on column map instead of column field * feat: conditionalSchema columnMap and singular plural * fix: remove uuid fix * feat: add name and label (singular/plural) drop old tableColumnName
40 lines
1.2 KiB
TypeScript
40 lines
1.2 KiB
TypeScript
import { Injectable, UnauthorizedException } from '@nestjs/common';
|
|
|
|
import {
|
|
BeforeCreateOneHook,
|
|
CreateOneInputType,
|
|
} from '@ptc-org/nestjs-query-graphql';
|
|
|
|
import { DataSourceMetadataService } from 'src/metadata/data-source-metadata/data-source-metadata.service';
|
|
import { ObjectMetadata } from 'src/metadata/object-metadata/object-metadata.entity';
|
|
|
|
@Injectable()
|
|
export class BeforeCreateOneObject<T extends ObjectMetadata>
|
|
implements BeforeCreateOneHook<T, any>
|
|
{
|
|
constructor(readonly dataSourceMetadataService: DataSourceMetadataService) {}
|
|
|
|
async run(
|
|
instance: CreateOneInputType<T>,
|
|
context: any,
|
|
): Promise<CreateOneInputType<T>> {
|
|
const workspaceId = context?.req?.user?.workspace?.id;
|
|
|
|
if (!workspaceId) {
|
|
throw new UnauthorizedException();
|
|
}
|
|
|
|
const lastDataSourceMetadata =
|
|
await this.dataSourceMetadataService.getLastDataSourceMetadataFromWorkspaceIdOrFail(
|
|
workspaceId,
|
|
);
|
|
|
|
instance.input.dataSourceId = lastDataSourceMetadata.id;
|
|
instance.input.targetTableName = instance.input.nameSingular;
|
|
instance.input.workspaceId = workspaceId;
|
|
instance.input.isActive = false;
|
|
instance.input.isCustom = true;
|
|
return instance;
|
|
}
|
|
}
|