@odyssoft/tsorm
Version:
TypeScript ORM for MySQL
214 lines (213 loc) • 5.24 kB
TypeScript
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 {};