ts-sql-query
Version:
Type-safe SQL query builder like QueryDSL or JOOQ in Java or Linq in .Net for TypeScript with MariaDB, MySql, Oracle, PostgreSql, Sqlite and SqlServer support.
117 lines (116 loc) • 5.89 kB
TypeScript
import type { AnyDB } from "../databases";
import { RawFragment } from "./RawFragment";
import type { database, noTableOrViewRequired, oldValues, outerJoinAlias, outerJoinDatabase, outerJoinTableOrView, resolvedShape, tableOrView, tableOrViewAlias, tableOrViewCustomName, tableOrViewRef, tableOrViewRefType, type, valuesForInsert } from "./symbols";
export interface ITableOrViewRef<DB extends AnyDB> {
[database]: DB;
[tableOrViewRefType]: 'tableOrViewRef';
}
export interface OfDB<DB extends AnyDB> {
[database]: DB;
}
export interface ITableOrView<REF extends ITableOrViewRef<AnyDB>> extends OfDB<REF[typeof database]> {
[tableOrViewRef]: REF;
}
export interface ITableOrViewOf<DB extends AnyDB, REF extends ITableOrViewRef<DB>> extends ITableOrView<REF> {
}
interface Column {
[type]: 'column';
}
export interface HasIsValue {
_isValue(value: any): boolean;
}
export interface HasAddWiths {
__addWiths(sqlBuilder: HasIsValue, withs: Array<IWithView<any>>): void;
__registerTableOrView(sqlBuilder: HasIsValue, requiredTablesOrViews: Set<ITableOrView<any>>): void;
__registerRequiredColumn(sqlBuilder: HasIsValue, requiredColumns: Set<Column>, onlyForTablesOrViews: Set<ITableOrView<any>>): void;
__getOldValues(sqlBuilder: HasIsValue): ITableOrView<any> | undefined;
__getValuesForInsert(sqlBuilder: HasIsValue): ITableOrView<any> | undefined;
__isAllowed(sqlBuilder: HasIsValue): boolean;
}
export declare function __addWiths(value: any, sqlBuilder: HasIsValue, withs: Array<IWithView<any>>): void;
export declare function __registerTableOrView(value: any, sqlBuilder: HasIsValue, requiredTablesOrViews: Set<ITableOrView<any>>): void;
export declare function __registerRequiredColumn(value: any, sqlBuilder: HasIsValue, requiredColumns: Set<Column>, onlyForTablesOrViews: Set<ITableOrView<any>>): void;
export declare function __getOldValues(value: any, sqlBuilder: HasIsValue): ITableOrView<any> | undefined;
export declare function __getValuesForInsert(value: any, sqlBuilder: HasIsValue): ITableOrView<any> | undefined;
export declare function __isAllowed(value: any, sqlBuilder: HasIsValue): boolean;
export interface __ITableOrViewPrivate extends HasAddWiths {
__name: string;
__as?: string;
__type: 'table' | 'view' | 'with' | 'values';
__forUseInLeftJoin?: boolean;
__template?: RawFragment<any>;
__customizationName?: string;
__oldValues?: boolean;
__valuesForInsert?: boolean;
__hasExternalDependencies?: boolean;
}
export declare function __getTableOrViewPrivate(table: ITableOrView<any> | OuterJoinSource<any, any>): __ITableOrViewPrivate;
export interface ITable<REF extends ITableOrViewRef<AnyDB>> extends ITableOrView<REF> {
[type]: 'table';
}
export interface ITableOf<DB extends AnyDB, REF extends ITableOrViewRef<DB>> extends ITable<REF> {
}
export interface ITableOfDB<DB extends AnyDB> extends ITable<ITableOrViewRef<DB>> {
}
export interface IView<REF extends ITableOrViewRef<AnyDB>> extends ITableOrView<REF> {
[type]: 'view';
}
export interface IValues<REF extends ITableOrViewRef<AnyDB>> extends ITableOrView<REF> {
[type]: 'values';
}
export interface IWithView<REF extends ITableOrViewRef<AnyDB>> extends ITableOrView<REF> {
[type]: 'with';
}
export interface NoTableOrViewRequired<DB extends AnyDB> extends ITableOrViewRef<DB> {
[noTableOrViewRequired]: 'NoTableOrViewRequired';
}
export interface NoTableOrViewRequiredView<DB extends AnyDB> extends IView<NoTableOrViewRequired<DB>> {
[noTableOrViewRequired]: 'NoTableOrViewRequiredView';
}
export interface OLD<REF extends ITableOrViewRef<AnyDB>> extends ITableOrViewRef<REF[typeof database]> {
[tableOrViewRef]: REF;
[oldValues]: 'OldValues';
}
export interface OldTableOrView<TABLE_OR_VIEW extends ITableOrView<any>> extends ITableOrView<OLD<TABLE_OR_VIEW[typeof tableOrViewRef]>> {
[tableOrView]: TABLE_OR_VIEW;
[oldValues]: 'OldValuesTableOrView';
}
export interface VALUES_FOR_INSERT<REF extends ITableOrViewRef<AnyDB>> extends ITableOrViewRef<REF[typeof database]> {
[tableOrViewRef]: REF;
[valuesForInsert]: 'ValuesForInsert';
}
export interface ValuesForInsertTableOrView<TABLE_OR_VIEW extends ITableOrView<any>> extends ITableOrView<OLD<TABLE_OR_VIEW[typeof tableOrViewRef]>> {
[tableOrView]: TABLE_OR_VIEW;
[valuesForInsert]: 'ValuesForInsertTableOrView';
}
export interface TABLE_OR_VIEW_ALIAS<REF extends ITableOrViewRef<AnyDB>, ALIAS> extends ITableOrViewRef<REF[typeof database]> {
[tableOrViewAlias]: ALIAS;
[tableOrViewRef]: REF;
}
export interface CUSTOMIZED_TABLE_OR_VIEW<REF extends ITableOrViewRef<AnyDB>, NAME> extends ITableOrViewRef<REF[typeof database]> {
[tableOrViewCustomName]: NAME;
[tableOrViewRef]: REF;
}
export interface TableOrViewAlias<TABLE_OR_VIEW extends ITableOrView<any>, ALIAS> extends ITableOrView<TABLE_OR_VIEW_ALIAS<TABLE_OR_VIEW[typeof tableOrViewRef], ALIAS>> {
[tableOrView]: TABLE_OR_VIEW;
[tableOrViewAlias]: ALIAS;
}
export interface OuterJoinSource<TABLE_OR_VIEW extends ITableOrView<any>, ALIAS> {
[outerJoinDatabase]: TABLE_OR_VIEW[typeof database];
[outerJoinTableOrView]: TABLE_OR_VIEW;
[outerJoinAlias]: ALIAS;
}
export interface OUTER_JOIN_SOURCE<REF extends ITableOrViewRef<AnyDB>, ALIAS> extends ITableOrViewRef<REF[typeof database]> {
[outerJoinDatabase]: REF[typeof database];
[outerJoinTableOrView]: REF;
[outerJoinAlias]: ALIAS;
}
export interface ITableOrViewOuterJoin<TABLE_OR_VIEW extends ITableOrView<any>, ALIAS> extends ITableOrView<OUTER_JOIN_SOURCE<TABLE_OR_VIEW[typeof tableOrViewRef], ALIAS>> {
[tableOrView]: TABLE_OR_VIEW;
[tableOrViewAlias]: ALIAS;
[outerJoinAlias]: ALIAS;
}
export interface ResolvedShape<TABLE extends ITableOrView<any>> extends ITableOfDB<TABLE[typeof database]> {
[resolvedShape]: 'resolvedShape';
}
export {};