UNPKG

@odyssoft/tsorm

Version:
214 lines (213 loc) 5.24 kB
import { Pool, PoolOptions } from 'mysql2/promise'; import { KeyOf, ModelKeys } from './'; export interface ConnectionOptions extends PoolOptions { host: string; password: string; port: number; user: string; create?: boolean; } export declare type ModelsKeys<T> = { [K in keyof T]: ModelKeys<T[K]>; }; export declare type SchemaType<T> = { connection: Pool; name: string; close: () => void; }; export declare type BetweenType<T = any> = { min: KeyOf<T> | number; max: KeyOf<T> | number; }; export declare type EqualsType<T = any> = KeyOf<T> | number; export declare type GreaterThanType<T = any> = KeyOf<T> | number; export declare type GreaterThanEqualType<T = any> = KeyOf<T> | number; export declare type InType = (string | number)[]; export declare type LessThanType<T = any> = KeyOf<T> | number; export declare type LessThanEqualType<T = any> = KeyOf<T> | number; export declare type LikeType = string; interface Between<T> { [key: string]: any; $between: BetweenType<T>; $equals?: never; $greaterThan?: never; $greaterThanEqual?: never; $in?: never; $lessThan?: never; $lessThanEqual?: never; $like?: never; $notBetween?: never; $notEquals?: never; $notIn?: never; $notLike?: never; } interface Equals<T> { [key: string]: any; $between?: never; $equals: EqualsType<T>; $greaterThan?: never; $greaterThanEqual?: never; $in?: never; $lessThan?: never; $lessThanEqual?: never; $like?: never; $notBetween?: never; $notEquals?: never; $notIn?: never; $notLike?: never; } interface GreaterThan<T> { [key: string]: any; $between?: never; $equals?: never; $greaterThan: GreaterThanType<T>; $greaterThanEqual?: never; $in?: never; $lessThan?: never; $lessThanEqual?: never; $like?: never; $notBetween?: never; $notEquals?: never; $notIn?: never; $notLike?: never; } interface GreaterThanEqual<T> { [key: string]: any; $between?: never; $equals?: never; $greaterThan?: never; $greaterThanEqual: GreaterThanEqualType<T>; $in?: never; $lessThan?: never; $lessThanEqual?: never; $like?: never; $notBetween?: never; $notEquals?: never; $notIn?: never; $notLike?: never; } interface In { [key: string]: any; $between?: never; $equals?: never; $greaterThan?: never; $greaterThanEqual?: never; $in: InType; $lessThan?: never; $lessThanEqual?: never; $like?: never; $notBetween?: never; $notEquals?: never; $notIn?: never; $notLike?: never; } interface LessThan<T> { [key: string]: any; $between?: never; $equals?: never; $greaterThan?: never; $greaterThanEqual?: never; $in?: never; $lessThan: LessThanType<T>; $lessThanEqual?: never; $like?: never; $notBetween?: never; $notEquals?: never; $notIn?: never; $notLike?: never; } interface LessThanEqual<T> { [key: string]: any; $between?: never; $equals?: never; $greaterThan?: never; $greaterThanEqual?: never; $in?: never; $lessThan?: never; $lessThanEqual: LessThanEqualType<T>; $like?: never; $notBetween?: never; $notEquals?: never; $notIn?: never; $notLike?: never; } interface Like { [key: string]: any; $between?: never; $equals?: never; $greaterThan?: never; $greaterThanEqual?: never; $in?: never; $lessThan?: never; $lessThanEqual?: never; $like: LikeType; $notBetween?: never; $notEquals?: never; $notIn?: never; $notLike?: never; } interface NotBetween<T> { [key: string]: any; $between?: never; $equals?: never; $greaterThan?: never; $greaterThanEqual?: never; $in?: never; $lessThan?: never; $lessThanEqual?: never; $like?: never; $notBetween: BetweenType<T>; $notEquals?: never; $notIn?: never; $notLike?: never; } interface NotEquals<T> { [key: string]: any; $between?: never; $equals?: never; $greaterThan?: never; $greaterThanEqual?: never; $in?: never; $lessThan?: never; $lessThanEqual?: never; $like?: never; $notBetween?: never; $notEquals: EqualsType<T>; $notIn?: never; $notLike?: never; } interface NotIn { [key: string]: any; $between?: never; $equals?: never; $greaterThan?: never; $greaterThanEqual?: never; $in?: never; $lessThan?: never; $lessThanEqual?: never; $like?: never; $notBetween?: never; $notEquals?: never; $notIn: InType; $notLike?: never; } interface NotLike { [key: string]: any; $between?: never; $equals?: never; $greaterThan?: never; $greaterThanEqual?: never; $in?: never; $lessThan?: never; $lessThanEqual?: never; $like?: never; $notBetween?: never; $notEquals?: never; $notIn?: never; $notLike: LikeType; } export declare type Or<T> = { $or: [T, T, ...T[]]; }; export declare type OperatorType<T> = KeyOf<T> | Between<T> | Equals<T> | GreaterThan<T> | GreaterThanEqual<T> | In | LessThan<T> | LessThanEqual<T> | Like | NotBetween<T> | NotEquals<T> | NotIn | NotLike; export {};