Files
twenty_crm/server/src/tenant/entity-resolver/entity-resolver.service.ts
Jérémy M 017a0b1563 feat: refactor custom object (#1887)
* 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>
2023-10-10 10:50:54 +02:00

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