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.
41 lines (40 loc) • 1.98 kB
TypeScript
import type { ITableOrView } from "./ITableOrView";
import type { ToSql } from "../sqlBuilders/SqlBuilder";
import type { AnyValueSource, __ValueSourcePrivate } from "../expressions/values";
import type { autogeneratedPrimaryKeyValue, computedValue, hasDefaultValue, optionalValue, primaryKeyValue, type } from "./symbols";
import { isColumnObject } from "./symbols";
export interface Column extends AnyValueSource {
[type]: 'column';
}
export interface ColumnWithDefaultValue extends Column {
[hasDefaultValue]: true;
}
export interface OptionalColumn extends Column {
[optionalValue]: true;
}
export interface PrimaryKeyAutogeneratedColumn extends Column {
[autogeneratedPrimaryKeyValue]: true;
}
export interface PrimaryKeyColumn extends Column {
[primaryKeyValue]: true;
}
export interface ComputedColumn extends Column {
[computedValue]: true;
}
export type ExtractColumnInfo<T> = T extends Column ? ExtractColumnSubtypeInfo<T> extends Column ? ExtractColumnSubtypeInfo<T> : Column : {};
export type ExtractColumnSubtypeInfo<T> = (T extends ColumnWithDefaultValue ? ColumnWithDefaultValue : {}) & (T extends OptionalColumn ? OptionalColumn : {}) & (T extends PrimaryKeyAutogeneratedColumn ? PrimaryKeyAutogeneratedColumn : {}) & (T extends PrimaryKeyColumn ? PrimaryKeyColumn : {}) & (T extends ComputedColumn ? ComputedColumn : {});
export interface __ColumnPrivate extends __ValueSourcePrivate {
[isColumnObject]: true;
__name: string;
__tableOrView: ITableOrView<any>;
__hasDefault: boolean;
__isPrimaryKey: boolean;
__isAutogeneratedPrimaryKey: boolean;
__isComputed: boolean;
__sequenceName?: string;
}
export declare function isColumn(value: any): value is AnyValueSource & Column;
export declare function __getColumnPrivate(column: Column): __ColumnPrivate;
export declare function __getColumnOfObject(obj: ITableOrView<any> | {
[property: string]: Column;
}, column: string): (Column & ToSql) | undefined;