move types to helper file

This commit is contained in:
ppetzold 2022-03-14 20:48:41 +01:00
parent ebc31004c5
commit 0241c86ea2
3 changed files with 28 additions and 28 deletions

27
src/helper.ts Normal file
View File

@ -0,0 +1,27 @@
type Join<K, P> = 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<T, D extends number = 2> = [D] extends [never]
? never
: T extends Record<string, any>
? {
[K in keyof T]-?: K extends string
? T[K] extends Date
? `${K}`
: T[K] extends Array<infer U>
? `${K}` | Join<K, Column<U, Prev[D]>>
: `${K}` | Join<K, Column<T[K], Prev[D]>>
: never
}[keyof T]
: ''
export type RelationColumn<T> = Extract<
Column<T>,
{
[K in Column<T>]: K extends `${infer R}.${string}` ? R : never
}[Column<T>]
>
export type Order<T> = [Column<T>, 'ASC' | 'DESC']
export type SortBy<T> = Order<T>[]

View File

@ -20,31 +20,7 @@ import { ServiceUnavailableException } from '@nestjs/common'
import { values, mapKeys } from 'lodash' import { values, mapKeys } from 'lodash'
import { stringify } from 'querystring' import { stringify } from 'querystring'
import { WherePredicateOperator } from 'typeorm/query-builder/WhereClause' import { WherePredicateOperator } from 'typeorm/query-builder/WhereClause'
import { Join, Prev } from './utils' import { Column, Order, RelationColumn, SortBy } from './helper'
type Column<T, D extends number = 2> = [D] extends [never]
? never
: T extends Record<string, any>
? {
[K in keyof T]-?: K extends string
? T[K] extends Date
? `${K}`
: T[K] extends Array<infer U>
? `${K}` | Join<K, Column<U, Prev[D]>>
: `${K}` | Join<K, Column<T[K], Prev[D]>>
: never
}[keyof T]
: ''
type RelationColumn<T> = Extract<
Column<T>,
{
[K in Column<T>]: K extends `${infer R}.${string}` ? R : never
}[Column<T>]
>
type Order<T> = [Column<T>, 'ASC' | 'DESC']
type SortBy<T> = Order<T>[]
export class Paginated<T> { export class Paginated<T> {
data: T[] data: T[]

View File

@ -1,3 +0,0 @@
export type Join<K, P> = 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[]]