Refactor graphql query runner and add mutation resolvers (#7418)
Fixes https://github.com/twentyhq/twenty/issues/6859 This PR adds all the remaining resolvers for - updateOne/updateMany - createOne/createMany - deleteOne/deleteMany - destroyOne - restoreMany Also - refactored the graphql-query-runner to be able to add other resolvers without too much boilerplate. - add missing events that were not sent anymore as well as webhooks - make resolver injectable so they can inject other services as well - use objectMetadataMap from cache instead of computing it multiple time - various fixes (mutation not correctly parsing JSON, relationHelper fetching data with empty ids set, ...) Next steps: - Wrapping query builder to handle DB events properly - Move webhook emitters to db event listener - Add pagination where it's missing (findDuplicates, nested relations, etc...)
This commit is contained in:
@ -2,6 +2,7 @@ import {
|
||||
Record as IRecord,
|
||||
RecordOrderBy,
|
||||
} from 'src/engine/api/graphql/workspace-query-builder/interfaces/record.interface';
|
||||
import { FindManyResolverArgs } from 'src/engine/api/graphql/workspace-resolver-builder/interfaces/workspace-resolvers-builder.interface';
|
||||
|
||||
import {
|
||||
GraphqlQueryRunnerException,
|
||||
@ -44,3 +45,25 @@ export const encodeCursor = <ObjectRecord extends IRecord = IRecord>(
|
||||
|
||||
return Buffer.from(JSON.stringify(cursorData)).toString('base64');
|
||||
};
|
||||
|
||||
export const getCursor = (
|
||||
args: FindManyResolverArgs<any, any>,
|
||||
): Record<string, any> | undefined => {
|
||||
if (args.after) return decodeCursor(args.after);
|
||||
if (args.before) return decodeCursor(args.before);
|
||||
|
||||
return undefined;
|
||||
};
|
||||
|
||||
export const getPaginationInfo = (
|
||||
objectRecords: any[],
|
||||
limit: number,
|
||||
isForwardPagination: boolean,
|
||||
) => {
|
||||
const hasMoreRecords = objectRecords.length > limit;
|
||||
|
||||
return {
|
||||
hasNextPage: isForwardPagination && hasMoreRecords,
|
||||
hasPreviousPage: !isForwardPagination && hasMoreRecords,
|
||||
};
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user