Files
twenty_crm/packages/twenty-server/src/utils/pagination/interfaces/options.interface.ts
2023-12-10 18:10:54 +01:00

20 lines
608 B
TypeScript

import { GraphQLResolveInfo } from 'graphql';
import { ObjectLiteral, SelectQueryBuilder } from 'typeorm';
import { IEdge } from './edge.interface';
export interface IOptions<
Entity extends ObjectLiteral,
Record,
Cursor,
Node,
CustomEdge extends IEdge<Node>,
> {
getRecords?: (args: SelectQueryBuilder<Entity>) => Promise<Record[]>;
getCursor?: (record: Record | undefined) => Cursor;
encodeCursor?: (cursor: Cursor) => string;
decodeCursor?: (cursorString: string) => Cursor;
recordToEdge?: (record: Record) => Omit<CustomEdge, 'cursor'>;
resolveInfo?: GraphQLResolveInfo | null;
}