UNPKG

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
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;