feat: add missing updateMany and deleteMany resolvers on flexible backend (#2758)
* feat: add missing updateMany and deleteMany resolvers on flexible backend Co-authored-by: v1b3m <vibenjamin6@gmail.com> * Refactor according to review Co-authored-by: v1b3m <vibenjamin6@gmail.com> * Update return types for `createMany`, `updateMany` and `deleteMany` Co-authored-by: v1b3m <vibenjamin6@gmail.com> --------- Co-authored-by: gitstart-twenty <gitstart-twenty@users.noreply.github.com> Co-authored-by: v1b3m <vibenjamin6@gmail.com>
This commit is contained in:
co-authored by
v1b3m
gitstart-twenty
parent
1ba062f40c
commit
1822370389
@@ -9,6 +9,7 @@ import { ObjectMetadataInterface } from 'src/workspace/workspace-schema-builder/
|
||||
import { TypeDefinitionsStorage } from 'src/workspace/workspace-schema-builder/storages/type-definitions.storage';
|
||||
import { getResolverName } from 'src/workspace/utils/get-resolver-name.util';
|
||||
import { getResolverArgs } from 'src/workspace/workspace-schema-builder/utils/get-resolver-args.util';
|
||||
import { TypeMapperService } from 'src/workspace/workspace-schema-builder/services/type-mapper.service';
|
||||
|
||||
import { ArgsFactory } from './args.factory';
|
||||
import { ObjectTypeDefinitionKind } from './object-type-definition.factory';
|
||||
@@ -25,6 +26,7 @@ export class RootTypeFactory {
|
||||
|
||||
constructor(
|
||||
private readonly typeDefinitionsStorage: TypeDefinitionsStorage,
|
||||
private readonly typeMapperService: TypeMapperService,
|
||||
private readonly argsFactory: ArgsFactory,
|
||||
) {}
|
||||
|
||||
@@ -70,7 +72,7 @@ export class RootTypeFactory {
|
||||
for (const methodName of workspaceResolverMethodNames) {
|
||||
const name = getResolverName(objectMetadata, methodName);
|
||||
const args = getResolverArgs(methodName);
|
||||
const outputType = this.typeDefinitionsStorage.getObjectTypeByKey(
|
||||
const objectType = this.typeDefinitionsStorage.getObjectTypeByKey(
|
||||
objectMetadata.id,
|
||||
methodName === 'findMany'
|
||||
? ObjectTypeDefinitionKind.Connection
|
||||
@@ -84,7 +86,7 @@ export class RootTypeFactory {
|
||||
options,
|
||||
);
|
||||
|
||||
if (!outputType) {
|
||||
if (!objectType) {
|
||||
this.logger.error(
|
||||
`Could not find a GraphQL type for ${objectMetadata.id} for method ${methodName}`,
|
||||
{
|
||||
@@ -99,6 +101,12 @@ export class RootTypeFactory {
|
||||
);
|
||||
}
|
||||
|
||||
const outputType = this.typeMapperService.mapToGqlType(objectType, {
|
||||
isArray: ['updateMany', 'deleteMany', 'createMany'].includes(
|
||||
methodName,
|
||||
),
|
||||
});
|
||||
|
||||
fieldConfigMap[name] = {
|
||||
type: outputType,
|
||||
args: argsType,
|
||||
|
||||
@@ -36,6 +36,7 @@ export const getResolverArgs = (
|
||||
},
|
||||
};
|
||||
case 'findOne':
|
||||
case 'deleteMany':
|
||||
return {
|
||||
filter: {
|
||||
kind: InputTypeDefinitionKind.Filter,
|
||||
@@ -75,6 +76,17 @@ export const getResolverArgs = (
|
||||
isNullable: false,
|
||||
},
|
||||
};
|
||||
case 'updateMany':
|
||||
return {
|
||||
data: {
|
||||
kind: InputTypeDefinitionKind.Update,
|
||||
isNullable: false,
|
||||
},
|
||||
filter: {
|
||||
kind: InputTypeDefinitionKind.Filter,
|
||||
isNullable: false,
|
||||
},
|
||||
};
|
||||
default:
|
||||
throw new Error(`Unknown resolver type: ${type}`);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user