diff --git a/src/buildPaginator.ts b/src/buildPaginator.ts new file mode 100644 index 0000000..96c5049 --- /dev/null +++ b/src/buildPaginator.ts @@ -0,0 +1,48 @@ +import { ObjectType } from 'typeorm'; + +import Paginator, { Order } from './Paginator'; + +export interface PagingQuery { + afterCursor?: string; + beforeCursor?: string; + limit?: number; + order?: Order; +} + +export interface PaginationOptions { + entity: ObjectType; + alias?: string; + query?: PagingQuery; + paginationKeys?: Extract[]; +} + +export function buildPaginator(options: PaginationOptions): Paginator { + const { + entity, + query = {}, + alias = entity.name.toLowerCase(), + paginationKeys = ['id' as any], + } = options; + + const paginator = new Paginator(entity, paginationKeys); + + paginator.setAlias(alias); + + if (query.afterCursor) { + paginator.setAfterCursor(query.afterCursor); + } + + if (query.beforeCursor) { + paginator.setBeforeCursor(query.beforeCursor); + } + + if (query.limit) { + paginator.setLimit(query.limit); + } + + if (query.order) { + paginator.setOrder(query.order); + } + + return paginator; +} diff --git a/src/index.ts b/src/index.ts index d983fbb..9361508 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,50 +1,2 @@ -import { ObjectType } from 'typeorm'; - -import Paginator, { Order, Cursor, PagingResult } from './Paginator'; - -export { Order, Cursor, PagingResult }; - -export interface PagingQuery { - afterCursor?: string; - beforeCursor?: string; - limit?: number; - order?: Order; -} - -export interface PaginationOptions { - entity: ObjectType; - alias?: string; - query?: PagingQuery; - paginationKeys?: Extract[]; -} - -export function buildPaginator(options: PaginationOptions): Paginator { - const { - entity, - query = {}, - alias = entity.name.toLowerCase(), - paginationKeys = ['id' as any], - } = options; - - const paginator = new Paginator(entity, paginationKeys); - - paginator.setAlias(alias); - - if (query.afterCursor) { - paginator.setAfterCursor(query.afterCursor); - } - - if (query.beforeCursor) { - paginator.setBeforeCursor(query.beforeCursor); - } - - if (query.limit) { - paginator.setLimit(query.limit); - } - - if (query.order) { - paginator.setOrder(query.order); - } - - return paginator; -} +export * from './buildPaginator'; +export * from './Paginator';