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
TypeScript
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 {};