* chore: drop old universal entity * feat: wip refactor graphql generation custom object * feat: refactor custom object resolvers fix: tests fix: import --------- Co-authored-by: Charles Bochet <charles@twenty.com>
85 lines
2.2 KiB
TypeScript
85 lines
2.2 KiB
TypeScript
import { Injectable } from '@nestjs/common';
|
|
|
|
import { GraphQLResolveInfo } from 'graphql';
|
|
|
|
import { SchemaBuilderContext } from 'src/tenant/schema-builder/interfaces/schema-builder-context.interface';
|
|
|
|
import { DataSourceService } from 'src/metadata/data-source/data-source.service';
|
|
|
|
import { PGGraphQLQueryRunner } from './utils/pg-graphql-query-runner.util';
|
|
|
|
@Injectable()
|
|
export class EntityResolverService {
|
|
constructor(private readonly dataSourceService: DataSourceService) {}
|
|
|
|
async findMany(context: SchemaBuilderContext, info: GraphQLResolveInfo) {
|
|
const runner = new PGGraphQLQueryRunner(this.dataSourceService, {
|
|
entityName: context.entityName,
|
|
tableName: context.tableName,
|
|
workspaceId: context.workspaceId,
|
|
info,
|
|
fieldAliases: context.fieldAliases,
|
|
});
|
|
|
|
return runner.findMany();
|
|
}
|
|
|
|
async findOne(
|
|
args: { id: string },
|
|
context: SchemaBuilderContext,
|
|
info: GraphQLResolveInfo,
|
|
) {
|
|
const runner = new PGGraphQLQueryRunner(this.dataSourceService, {
|
|
entityName: context.entityName,
|
|
tableName: context.tableName,
|
|
workspaceId: context.workspaceId,
|
|
info,
|
|
fieldAliases: context.fieldAliases,
|
|
});
|
|
|
|
return runner.findOne(args);
|
|
}
|
|
|
|
async createOne(
|
|
args: { data: any },
|
|
context: SchemaBuilderContext,
|
|
info: GraphQLResolveInfo,
|
|
) {
|
|
const records = await this.createMany({ data: [args.data] }, context, info);
|
|
|
|
return records?.[0];
|
|
}
|
|
|
|
async createMany(
|
|
args: { data: any[] },
|
|
context: SchemaBuilderContext,
|
|
info: GraphQLResolveInfo,
|
|
) {
|
|
const runner = new PGGraphQLQueryRunner(this.dataSourceService, {
|
|
entityName: context.entityName,
|
|
tableName: context.tableName,
|
|
workspaceId: context.workspaceId,
|
|
info,
|
|
fieldAliases: context.fieldAliases,
|
|
});
|
|
|
|
return runner.createMany(args);
|
|
}
|
|
|
|
async updateOne(
|
|
args: { id: string; data: any },
|
|
context: SchemaBuilderContext,
|
|
info: GraphQLResolveInfo,
|
|
) {
|
|
const runner = new PGGraphQLQueryRunner(this.dataSourceService, {
|
|
entityName: context.entityName,
|
|
tableName: context.tableName,
|
|
workspaceId: context.workspaceId,
|
|
info,
|
|
fieldAliases: context.fieldAliases,
|
|
});
|
|
|
|
return runner.updateOne(args);
|
|
}
|
|
}
|