From 0241c86ea24c0d7ed0eb45286c5b12193f7c46f7 Mon Sep 17 00:00:00 2001 From: ppetzold Date: Mon, 14 Mar 2022 20:48:41 +0100 Subject: [PATCH] move types to helper file --- src/helper.ts | 27 +++++++++++++++++++++++++++ src/paginate.ts | 26 +------------------------- src/utils.ts | 3 --- 3 files changed, 28 insertions(+), 28 deletions(-) create mode 100644 src/helper.ts delete mode 100644 src/utils.ts diff --git a/src/helper.ts b/src/helper.ts new file mode 100644 index 0000000..6324452 --- /dev/null +++ b/src/helper.ts @@ -0,0 +1,27 @@ +type Join = K extends string ? (P extends string ? `${K}${'' extends P ? '' : '.'}${P}` : never) : never + +type Prev = [never, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, ...0[]] + +export type Column = [D] extends [never] + ? never + : T extends Record + ? { + [K in keyof T]-?: K extends string + ? T[K] extends Date + ? `${K}` + : T[K] extends Array + ? `${K}` | Join> + : `${K}` | Join> + : never + }[keyof T] + : '' + +export type RelationColumn = Extract< + Column, + { + [K in Column]: K extends `${infer R}.${string}` ? R : never + }[Column] +> + +export type Order = [Column, 'ASC' | 'DESC'] +export type SortBy = Order[] diff --git a/src/paginate.ts b/src/paginate.ts index 10f813f..7e571c4 100644 --- a/src/paginate.ts +++ b/src/paginate.ts @@ -20,31 +20,7 @@ import { ServiceUnavailableException } from '@nestjs/common' import { values, mapKeys } from 'lodash' import { stringify } from 'querystring' import { WherePredicateOperator } from 'typeorm/query-builder/WhereClause' -import { Join, Prev } from './utils' - -type Column = [D] extends [never] - ? never - : T extends Record - ? { - [K in keyof T]-?: K extends string - ? T[K] extends Date - ? `${K}` - : T[K] extends Array - ? `${K}` | Join> - : `${K}` | Join> - : never - }[keyof T] - : '' - -type RelationColumn = Extract< - Column, - { - [K in Column]: K extends `${infer R}.${string}` ? R : never - }[Column] -> - -type Order = [Column, 'ASC' | 'DESC'] -type SortBy = Order[] +import { Column, Order, RelationColumn, SortBy } from './helper' export class Paginated { data: T[] diff --git a/src/utils.ts b/src/utils.ts deleted file mode 100644 index 141fc8d..0000000 --- a/src/utils.ts +++ /dev/null @@ -1,3 +0,0 @@ -export type Join = K extends string ? (P extends string ? `${K}${'' extends P ? '' : '.'}${P}` : never) : never - -export type Prev = [never, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, ...0[]]