UNPKG

@odyssoft/tsorm

Version:
25 lines (24 loc) 1.68 kB
import { KeyOf, OperatorType, Or, SelectOptions, StringOverride } from './'; export declare type Alias<T, A extends string> = { [K in keyof T as K extends string ? `${A}.${K}` : never]: T[K]; }; export declare type OnJoin<T> = Or<JoinOptions<T>> | JoinOptions<T>; export declare type AliasModel<T> = { [key: string]: any; join: <S, A extends string>(alias: AliasModel<Alias<S, A>>, join: Join, on: OnJoin<T & Alias<S, A>>) => AliasModel<T & Alias<S, A>>; select: (query?: SelectOptions<T>) => Promise<T[]>; SQL: () => SQLAliasModel<T>; crossJoin: <S, A extends string>(alias: AliasModel<Alias<S, A>>, on: OnJoin<T & Alias<S, A>>) => AliasModel<T & Alias<S, A>>; innerJoin: <S, A extends string>(alias: AliasModel<Alias<S, A>>, on: OnJoin<T & Alias<S, A>>) => AliasModel<T & Alias<S, A>>; leftJoin: <S, A extends string>(alias: AliasModel<Alias<S, A>>, on: OnJoin<T & Alias<S, A>>) => AliasModel<T & Alias<S, A>>; leftOuterJoin: <S, A extends string>(alias: AliasModel<Alias<S, A>>, on: OnJoin<T & Alias<S, A>>) => AliasModel<T & Alias<S, A>>; rightJoin: <S, A extends string>(alias: AliasModel<Alias<S, A>>, on: OnJoin<T & Alias<S, A>>) => AliasModel<T & Alias<S, A>>; rightOuterJoin: <S, A extends string>(alias: AliasModel<Alias<S, A>>, on: OnJoin<T & Alias<S, A>>) => AliasModel<T & Alias<S, A>>; }; export declare type Join = 'CROSS' | 'INNER' | 'LEFT' | 'RIGHT' | 'LEFT OUTER' | 'RIGHT OUTER'; export declare type JoinOptions<T> = { [Key in KeyOf<T>]?: boolean | number | null | OperatorType<T> | OperatorType<T>[] | StringOverride; }; export declare type SQLAliasModel<T> = { select: (query?: SelectOptions<T>) => string; };