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.

124 lines (123 loc) 14.6 kB
import type { ITableOrView } from "../utils/ITableOrView"; import { IfValueSource, BooleanValueSource, IAnyBooleanValueSource, IStringIntValueSource, StringIntValueSource, IStringNumberValueSource, StringNumberValueSource, IIntValueSource, IntValueSource, INumberValueSource, NumberValueSource, ITypeSafeBigintValueSource, TypeSafeBigintValueSource, IBigintValueSource, BigintValueSource, IStringDoubleValueSource, StringDoubleValueSource, IDoubleValueSource, DoubleValueSource, ITypeSafeStringValueSource, TypeSafeStringValueSource, IStringValueSource, StringValueSource, ILocalDateValueSource, LocalDateValueSource, IDateValueSource, DateValueSource, ILocalTimeValueSource, LocalTimeValueSource, ITimeValueSource, TimeValueSource, ILocalDateTimeValueSource, LocalDateTimeValueSource, IDateTimeValueSource, DateTimeValueSource, IEqualableValueSource, EqualableValueSource, IComparableValueSource, ComparableValueSource, IValueSource, AnyValueSource, MergeOptionalUnion, ICustomIntValueSource, ICustomDoubleValueSource, ICustomUuidValueSource, ICustomLocalDateValueSource, ICustomLocalTimeValueSource, ICustomLocalDateTimeValueSource } from "../expressions/values"; import type { ifValueSourceType, optionalType, tableOrView, valueSourceTypeName, valueType } from "../utils/symbols"; import type { AutogeneratedIdColumnKeys, ColumnKeys, IdColumnKeys, ProvidedIdColumnKeys, WritableColumnKeys } from "./types"; type OnlyStringKey<KEY> = KEY extends string ? KEY : never; /** @deprecated Use complex projections or aggregate as an object array instead */ export declare function prefixCapitalized<O extends object, PREFIX extends string>(obj: O, prefix: PREFIX): { [K in OnlyStringKey<keyof O> as `${PREFIX}${Capitalize<K>}`]: O[K]; }; /** @deprecated Use complex projections or aggregate as an object array instead */ export declare function prefixMapForSplitCapitalized<O extends object, PREFIX extends string>(obj: O, prefix: PREFIX): { [K in OnlyStringKey<keyof O> as K]: `${PREFIX}${Capitalize<K>}`; }; type CapitalizedGuided<PREFIX extends string, KEY extends string, REFERENCE extends object> = KEY extends keyof REFERENCE ? (REFERENCE[KEY] extends IValueSource<any, any, any, infer OPTIONAL_TYPE> ? (OPTIONAL_TYPE extends 'required' ? `${PREFIX}${Capitalize<KEY>}!` : `${PREFIX}${Capitalize<KEY>}`) : `${PREFIX}${Capitalize<KEY>}`) : `${PREFIX}${Capitalize<KEY>}`; /** @deprecated Use complex projections or aggregate as an object array instead */ export declare function prefixMapForGuidedSplitCapitalized<O extends object, R extends ITableOrView<any> | { [KEY in keyof O]?: AnyValueSource; }, PREFIX extends string>(obj: O, reference: R, prefix: PREFIX): { [K in OnlyStringKey<keyof O> as K]: CapitalizedGuided<PREFIX, K, R>; }; type NameGuided<KEY extends string, REFERENCE extends object> = KEY extends keyof REFERENCE ? (REFERENCE[KEY] extends IValueSource<any, any, any, infer OPTIONAL_TYPE> ? (OPTIONAL_TYPE extends 'required' ? `${KEY}!` : KEY) : KEY) : KEY; /** @deprecated Use complex projections or aggregate as an object array instead */ export declare function mapForGuidedSplit<O extends object, R extends ITableOrView<any> | { [KEY in keyof O]?: AnyValueSource; }>(obj: O, reference: R): { [K in OnlyStringKey<keyof O> as K]: NameGuided<K, R>; }; /** @deprecated Use complex projections or aggregate as an object array instead */ export declare function prefixDotted<O extends object, PREFIX extends string>(obj: O, prefix: PREFIX): { [K in OnlyStringKey<keyof O> as `${PREFIX}.${K}`]-?: O[K]; }; /** @deprecated Use complex projections or aggregate as an object array instead */ export declare function prefixMapForSplitDotted<O extends object, PREFIX extends string>(obj: O, prefix: PREFIX): { [K in OnlyStringKey<keyof O> as K]-?: `${PREFIX}.${K}`; }; type DottedGuided<PREFIX extends string, KEY extends string, REFERENCE extends object> = KEY extends keyof REFERENCE ? (REFERENCE[KEY] extends IValueSource<any, any, any, infer OPTIONAL_TYPE> ? (OPTIONAL_TYPE extends 'required' ? `${PREFIX}.${KEY}!` : `${PREFIX}.${KEY}`) : `${PREFIX}.${KEY}`) : `${PREFIX}.${KEY}`; /** @deprecated Use complex projections or aggregate as an object array instead */ export declare function prefixMapForGuidedSplitDotted<O extends object, R extends ITableOrView<any> | { [KEY in keyof O]?: AnyValueSource; }, PREFIX extends string>(obj: O, reference: R, prefix: PREFIX): { [K in OnlyStringKey<keyof O> as K]: DottedGuided<PREFIX, K, R>; }; export declare function extractColumnsFrom<O extends object, EXCLUDE extends ColumnKeys<O> = never>(obj: O, exclude?: EXCLUDE[]): { [K in Exclude<ColumnKeys<O>, EXCLUDE>]: O[K]; }; export declare function extractWritableColumnsFrom<O extends object, EXCLUDE extends ColumnKeys<O> = never>(obj: O, exclude?: EXCLUDE[]): { [K in Exclude<WritableColumnKeys<O>, EXCLUDE>]: O[K]; }; export declare function extractIdColumnsFrom<O extends object, EXCLUDE extends ColumnKeys<O> = never>(obj: O, exclude?: EXCLUDE[]): { [K in Exclude<IdColumnKeys<O>, EXCLUDE>]: O[K]; }; export declare function extractAutogeneratedIdColumnsFrom<O extends object, EXCLUDE extends ColumnKeys<O> = never>(obj: O, exclude?: EXCLUDE[]): { [K in Exclude<AutogeneratedIdColumnKeys<O>, EXCLUDE>]: O[K]; }; export declare function extractProvidedIdColumnsFrom<O extends object, EXCLUDE extends ColumnKeys<O> = never>(obj: O, exclude?: EXCLUDE[]): { [K in Exclude<ProvidedIdColumnKeys<O>, EXCLUDE>]: O[K]; }; export declare function extractColumnNamesFrom<O extends object, EXCLUDE extends ColumnKeys<O> = never>(obj: O, exclude?: EXCLUDE[]): Exclude<ColumnKeys<O>, EXCLUDE>[]; export declare function extractWritableColumnNamesFrom<O extends object, EXCLUDE extends ColumnKeys<O> = never>(obj: O, exclude?: EXCLUDE[]): Exclude<WritableColumnKeys<O>, EXCLUDE>[]; export declare function extractIdColumnNamesFrom<O extends object, EXCLUDE extends ColumnKeys<O> = never>(obj: O, exclude?: EXCLUDE[]): Exclude<IdColumnKeys<O>, EXCLUDE>[]; export declare function extractAutogeneratedIdColumnNamesFrom<O extends object, EXCLUDE extends ColumnKeys<O> = never>(obj: O, exclude?: EXCLUDE[]): Exclude<AutogeneratedIdColumnKeys<O>, EXCLUDE>[]; export declare function extractProvidedIdColumnNamesFrom<O extends object, EXCLUDE extends ColumnKeys<O> = never>(obj: O, exclude?: EXCLUDE[]): Exclude<AutogeneratedIdColumnKeys<O>, EXCLUDE>[]; export declare function extractWritableShapeFrom<O extends object, EXCLUDE extends ColumnKeys<O> = never>(obj: O, exclude?: EXCLUDE[]): { [K in Exclude<WritableColumnKeys<O>, EXCLUDE>]: K; }; type HasIfValueSource<VALUE> = VALUE extends { [ifValueSourceType]: 'IfValueSource'; } ? true : never; /** @deprecated Use connection.dynamicBooleanExpressionUsing instead */ export declare function mergeType<VALUE extends IAnyBooleanValueSource<any, any>>(value: VALUE): true extends HasIfValueSource<VALUE> ? IfValueSource<VALUE[typeof tableOrView], MergeOptionalUnion<VALUE[typeof optionalType]>> : BooleanValueSource<VALUE[typeof tableOrView], MergeOptionalUnion<VALUE[typeof optionalType]>>; /** @deprecated Use connection.dynamicBooleanExpressionUsing instead */ export declare function mergeType<VALUE extends IStringIntValueSource<any, any>>(value: VALUE): StringIntValueSource<VALUE[typeof tableOrView], MergeOptionalUnion<VALUE[typeof optionalType]>>; /** @deprecated Use connection.dynamicBooleanExpressionUsing instead */ export declare function mergeType<VALUE extends IStringNumberValueSource<any, any>>(value: VALUE): StringNumberValueSource<VALUE[typeof tableOrView], MergeOptionalUnion<VALUE[typeof optionalType]>>; /** @deprecated Use connection.dynamicBooleanExpressionUsing instead */ export declare function mergeType<VALUE extends IIntValueSource<any, any>>(value: VALUE): IntValueSource<VALUE[typeof tableOrView], MergeOptionalUnion<VALUE[typeof optionalType]>>; /** @deprecated Use connection.dynamicBooleanExpressionUsing instead */ export declare function mergeType<VALUE extends INumberValueSource<any, any>>(value: VALUE): NumberValueSource<VALUE[typeof tableOrView], MergeOptionalUnion<VALUE[typeof optionalType]>>; /** @deprecated Use connection.dynamicBooleanExpressionUsing instead */ export declare function mergeType<VALUE extends ITypeSafeBigintValueSource<any, any>>(value: VALUE): TypeSafeBigintValueSource<VALUE[typeof tableOrView], MergeOptionalUnion<VALUE[typeof optionalType]>>; /** @deprecated Use connection.dynamicBooleanExpressionUsing instead */ export declare function mergeType<VALUE extends IBigintValueSource<any, any>>(value: VALUE): BigintValueSource<VALUE[typeof tableOrView], MergeOptionalUnion<VALUE[typeof optionalType]>>; /** @deprecated Use connection.dynamicBooleanExpressionUsing instead */ export declare function mergeType<VALUE extends IStringDoubleValueSource<any, any>>(value: VALUE): StringDoubleValueSource<VALUE[typeof tableOrView], MergeOptionalUnion<VALUE[typeof optionalType]>>; /** @deprecated Use connection.dynamicBooleanExpressionUsing instead */ export declare function mergeType<VALUE extends IStringNumberValueSource<any, any>>(value: VALUE): StringNumberValueSource<VALUE[typeof tableOrView], MergeOptionalUnion<VALUE[typeof optionalType]>>; /** @deprecated Use connection.dynamicBooleanExpressionUsing instead */ export declare function mergeType<VALUE extends IDoubleValueSource<any, any>>(value: VALUE): DoubleValueSource<VALUE[typeof tableOrView], MergeOptionalUnion<VALUE[typeof optionalType]>>; /** @deprecated Use connection.dynamicBooleanExpressionUsing instead */ export declare function mergeType<VALUE extends INumberValueSource<any, any>>(value: VALUE): NumberValueSource<VALUE[typeof tableOrView], MergeOptionalUnion<VALUE[typeof optionalType]>>; /** @deprecated Use connection.dynamicBooleanExpressionUsing instead */ export declare function mergeType<VALUE extends ITypeSafeStringValueSource<any, any>>(value: VALUE): TypeSafeStringValueSource<VALUE[typeof tableOrView], MergeOptionalUnion<VALUE[typeof optionalType]>>; /** @deprecated Use connection.dynamicBooleanExpressionUsing instead */ export declare function mergeType<VALUE extends IStringValueSource<any, any>>(value: VALUE): StringValueSource<VALUE[typeof tableOrView], MergeOptionalUnion<VALUE[typeof optionalType]>>; /** @deprecated Use connection.dynamicBooleanExpressionUsing instead */ export declare function mergeType<VALUE extends ILocalDateValueSource<any, any>>(value: VALUE): LocalDateValueSource<VALUE[typeof tableOrView], MergeOptionalUnion<VALUE[typeof optionalType]>>; /** @deprecated Use connection.dynamicBooleanExpressionUsing instead */ export declare function mergeType<VALUE extends IDateValueSource<any, any>>(value: VALUE): DateValueSource<VALUE[typeof tableOrView], MergeOptionalUnion<VALUE[typeof optionalType]>>; /** @deprecated Use connection.dynamicBooleanExpressionUsing instead */ export declare function mergeType<VALUE extends ILocalTimeValueSource<any, any>>(value: VALUE): LocalTimeValueSource<VALUE[typeof tableOrView], MergeOptionalUnion<VALUE[typeof optionalType]>>; /** @deprecated Use connection.dynamicBooleanExpressionUsing instead */ export declare function mergeType<VALUE extends ITimeValueSource<any, any>>(value: VALUE): TimeValueSource<VALUE[typeof tableOrView], MergeOptionalUnion<VALUE[typeof optionalType]>>; /** @deprecated Use connection.dynamicBooleanExpressionUsing instead */ export declare function mergeType<VALUE extends ILocalDateTimeValueSource<any, any>>(value: VALUE): LocalDateTimeValueSource<VALUE[typeof tableOrView], MergeOptionalUnion<VALUE[typeof optionalType]>>; /** @deprecated Use connection.dynamicBooleanExpressionUsing instead */ export declare function mergeType<VALUE extends IDateTimeValueSource<any, any>>(value: VALUE): DateTimeValueSource<VALUE[typeof tableOrView], MergeOptionalUnion<VALUE[typeof optionalType]>>; /** @deprecated Use connection.dynamicBooleanExpressionUsing instead */ export declare function mergeType<VALUE extends ICustomIntValueSource<any, any, any, any>>(value: VALUE): ICustomIntValueSource<VALUE[typeof tableOrView], VALUE[typeof valueType], VALUE[typeof valueSourceTypeName], MergeOptionalUnion<VALUE[typeof optionalType]>>; /** @deprecated Use connection.dynamicBooleanExpressionUsing instead */ export declare function mergeType<VALUE extends ICustomDoubleValueSource<any, any, any, any>>(value: VALUE): ICustomDoubleValueSource<VALUE[typeof tableOrView], VALUE[typeof valueType], VALUE[typeof valueSourceTypeName], MergeOptionalUnion<VALUE[typeof optionalType]>>; /** @deprecated Use connection.dynamicBooleanExpressionUsing instead */ export declare function mergeType<VALUE extends ICustomUuidValueSource<any, any, any, any>>(value: VALUE): ICustomUuidValueSource<VALUE[typeof tableOrView], VALUE[typeof valueType], VALUE[typeof valueSourceTypeName], MergeOptionalUnion<VALUE[typeof optionalType]>>; /** @deprecated Use connection.dynamicBooleanExpressionUsing instead */ export declare function mergeType<VALUE extends ICustomLocalDateValueSource<any, any, any, any>>(value: VALUE): ICustomLocalDateValueSource<VALUE[typeof tableOrView], VALUE[typeof valueType], VALUE[typeof valueSourceTypeName], MergeOptionalUnion<VALUE[typeof optionalType]>>; /** @deprecated Use connection.dynamicBooleanExpressionUsing instead */ export declare function mergeType<VALUE extends ICustomLocalTimeValueSource<any, any, any, any>>(value: VALUE): ICustomLocalTimeValueSource<VALUE[typeof tableOrView], VALUE[typeof valueType], VALUE[typeof valueSourceTypeName], MergeOptionalUnion<VALUE[typeof optionalType]>>; /** @deprecated Use connection.dynamicBooleanExpressionUsing instead */ export declare function mergeType<VALUE extends ICustomLocalDateTimeValueSource<any, any, any, any>>(value: VALUE): ICustomLocalDateTimeValueSource<VALUE[typeof tableOrView], VALUE[typeof valueType], VALUE[typeof valueSourceTypeName], MergeOptionalUnion<VALUE[typeof optionalType]>>; /** @deprecated Use connection.dynamicBooleanExpressionUsing instead */ export declare function mergeType<VALUE extends IEqualableValueSource<any, any, any, any>>(value: VALUE): EqualableValueSource<VALUE[typeof tableOrView], VALUE[typeof valueType], VALUE[typeof valueSourceTypeName], MergeOptionalUnion<VALUE[typeof optionalType]>>; /** @deprecated Use connection.dynamicBooleanExpressionUsing instead */ export declare function mergeType<VALUE extends IComparableValueSource<any, any, any, any>>(value: VALUE): ComparableValueSource<VALUE[typeof tableOrView], VALUE[typeof valueType], VALUE[typeof valueSourceTypeName], MergeOptionalUnion<VALUE[typeof optionalType]>>; export {};