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.

394 lines 139 kB
import type { IExecutableSelectQuery, RemapIValueSourceType, ValueSourceValueType, AnyValueSource, ValueSourceOf, ValueSourceValueTypeForResult, RemapIValueSourceTypeWithOptionalType, IExecutableInsertQuery, IIfValueSource, IBooleanValueSource, IStringValueSource, ITypeSafeStringValueSource } from "./values"; import type { ITableOrView, NoTableOrViewRequired, NoTableOrViewRequiredView, ResolvedShape, VALUES_FOR_INSERT } from "../utils/ITableOrView"; import type { AnyDB, TypeSafeDB, NoopDB, PostgreSql, SqlServer, Oracle, Sqlite, MariaDB, MySql, TypeWhenSafeDB } from "../databases"; import type { int } from "ts-extended-types"; import type { database, tableOrView, tableOrViewRef } from "../utils/symbols"; import type { ColumnWithDefaultValue } from "../utils/Column"; import type { RawFragment } from "../utils/RawFragment"; import type { Default } from "./Default"; import type { AutogeneratedPrimaryKeyColumnsTypesOf, ColumnsForSetOf, ColumnsForSetOfWithShape, ColumnsOf, OptionalColumnsForSetOf, OptionalColumnsForSetOfWithShape, RequiredColumnsForSetOf, RequiredColumnsForSetOfWithShape, ResolveShape } from "../utils/tableOrViewUtils"; import type { ColumnGuard, GuidedObj, GuidedPropName, RequiredKeysOfPickingColumns, ResultObjectValues, FixOptionalProperties, ValueOf, MandatoryPropertiesOf, ResultObjectValuesProjectedAsNullable } from "../utils/resultUtils"; export interface InsertCustomization<DB extends AnyDB> { afterInsertKeyword?: RawFragment<DB>; beforeQuery?: RawFragment<DB>; afterQuery?: RawFragment<DB>; queryExecutionName?: string; queryExecutionMetadata?: any; } export interface InsertExpressionOf<DB extends AnyDB> { [database]: DB; } export interface InsertExpressionBase<TABLE extends ITableOrView<any>> extends InsertExpressionOf<TABLE[typeof database]> { [tableOrView]: TABLE; } export interface ExecutableInsert<TABLE extends ITableOrView<any>> extends InsertExpressionBase<TABLE>, IExecutableInsertQuery<TABLE, number> { executeInsert(this: InsertExpressionOf<TypeSafeDB>, min?: number, max?: number): Promise<int>; executeInsert(min?: number, max?: number): Promise<number>; query(): string; params(): any[]; } export interface ExecutableInsertReturningLastInsertedId<TABLE extends ITableOrView<any>, RESULT> extends InsertExpressionBase<TABLE>, IExecutableInsertQuery<TABLE, RESULT> { executeInsert(min?: number, max?: number): Promise<RESULT>; query(): string; params(): any[]; } export interface CustomizableExecutableInsert<TABLE extends ITableOrView<any>> extends ExecutableInsert<TABLE> { customizeQuery(customization: InsertCustomization<TABLE[typeof database]>): ExecutableInsert<TABLE>; } export interface CustomizableExecutableInsertReturningLastInsertedId<TABLE extends ITableOrView<any>, RESULT> extends ExecutableInsertReturningLastInsertedId<TABLE, RESULT> { customizeQuery(customization: InsertCustomization<TABLE[typeof database]>): ExecutableInsertReturningLastInsertedId<TABLE, RESULT>; } export interface CustomizableExecutableInsertFromSelectOnConflict<TABLE extends ITableOrView<any>> extends CustomizableExecutableInsert<TABLE> { returningLastInsertedId: ReturningLastInsertedIdFromSelectType<TABLE>; returning: ReturningFromSelectFnType<TABLE>; returningOneColumn: ReturningOneColumnFromSelectFnType<TABLE>; } export interface CustomizableExecutableInsertFromSelectOnConflictOptional<TABLE extends ITableOrView<any>> extends CustomizableExecutableInsert<TABLE> { returningLastInsertedId: ReturningLastInsertedIdFromSelectOptionalType<TABLE>; returning: ReturningFromSelectOptionalFnType<TABLE>; returningOneColumn: ReturningOneColumnFromSelectOptionalFnType<TABLE>; } export interface CustomizableExecutableInsertFromSelect<TABLE extends ITableOrView<any>, SHAPE> extends CustomizableExecutableInsert<TABLE> { returningLastInsertedId: ReturningLastInsertedIdFromSelectType<TABLE>; returning: ReturningFromSelectFnType<TABLE>; returningOneColumn: ReturningOneColumnFromSelectFnType<TABLE>; onConflictDoNothing: OnConflictDoNothingFnType<TABLE, CustomizableExecutableInsertFromSelectOnConflictOptional<TABLE>>; onConflictDoUpdateDynamicSet: OnConflictDoUpdateDynamicSetFnType<TABLE, SHAPE, CustomizableExecutableInsertFromSelectOnConflict<TABLE>, CustomizableExecutableInsertFromSelectOnConflictOptional<TABLE>>; onConflictDoUpdateSet: OnConflictDoUpdateSetFnType<TABLE, SHAPE, CustomizableExecutableInsertFromSelectOnConflict<TABLE>, CustomizableExecutableInsertFromSelectOnConflictOptional<TABLE>>; onConflictDoUpdateSetIfValue: OnConflictDoUpdateSetFnType<TABLE, SHAPE, CustomizableExecutableInsertFromSelectOnConflict<TABLE>, CustomizableExecutableInsertFromSelectOnConflictOptional<TABLE>>; onConflictOn: OnConflictOnColumnFnType<TABLE, OnConflictDoInsertFromSelect<TABLE, SHAPE>>; onConflictOnConstraint: OnConflictOnConstraintFnType<TABLE, OnConflictDoInsertFromSelect<TABLE, SHAPE>>; } export interface OnConflictDoInsertFromSelect<TABLE extends ITableOrView<any>, SHAPE> { doNothing: OnConflictDoNothingFnType<TABLE, CustomizableExecutableInsertFromSelectOnConflictOptional<TABLE>>; doUpdateDynamicSet: OnConflictDoUpdateDynamicSetFnType<TABLE, SHAPE, CustomizableExecutableInsertFromSelectOnConflict<TABLE>, CustomizableExecutableInsertFromSelectOnConflictOptional<TABLE>>; doUpdateSet: OnConflictDoUpdateSetFnType<TABLE, SHAPE, CustomizableExecutableInsertFromSelectOnConflict<TABLE>, CustomizableExecutableInsertFromSelectOnConflictOptional<TABLE>>; doUpdateSetIfValue: OnConflictDoUpdateSetFnType<TABLE, SHAPE, CustomizableExecutableInsertFromSelectOnConflict<TABLE>, CustomizableExecutableInsertFromSelectOnConflictOptional<TABLE>>; } export interface CustomizableExecutableSimpleInsertOnConflict<TABLE extends ITableOrView<any>> extends CustomizableExecutableInsert<TABLE> { returningLastInsertedId: OnConflictReturningLastInsertedIdType<TABLE>; returning: ReturningFnType<TABLE>; returningOneColumn: ReturningOneColumnFnType<TABLE>; } export interface CustomizableExecutableSimpleInsertOnConflictOptional<TABLE extends ITableOrView<any>> extends CustomizableExecutableInsert<TABLE> { returningLastInsertedId: OnConflictReturningLastInsertedIdOptionalType<TABLE>; returning: ReturningOptionalFnType<TABLE>; returningOneColumn: ReturningOneColumnOptionalFnType<TABLE>; } export interface CustomizableExecutableSimpleInsert<TABLE extends ITableOrView<any>, SHAPE> extends CustomizableExecutableInsert<TABLE> { returningLastInsertedId: ReturningLastInsertedIdType<TABLE>; returning: ReturningFnType<TABLE>; returningOneColumn: ReturningOneColumnFnType<TABLE>; onConflictDoNothing: OnConflictDoNothingFnType<TABLE, CustomizableExecutableSimpleInsertOnConflictOptional<TABLE>>; onConflictDoUpdateDynamicSet: OnConflictDoUpdateDynamicSetFnType<TABLE, SHAPE, CustomizableExecutableSimpleInsertOnConflict<TABLE>, CustomizableExecutableSimpleInsertOnConflictOptional<TABLE>>; onConflictDoUpdateSet: OnConflictDoUpdateSetFnType<TABLE, SHAPE, CustomizableExecutableSimpleInsertOnConflict<TABLE>, CustomizableExecutableSimpleInsertOnConflictOptional<TABLE>>; onConflictDoUpdateSetIfValue: OnConflictDoUpdateSetFnType<TABLE, SHAPE, CustomizableExecutableSimpleInsertOnConflict<TABLE>, CustomizableExecutableSimpleInsertOnConflictOptional<TABLE>>; onConflictOn: OnConflictOnColumnFnType<TABLE, OnConflictDoSimpleInsert<TABLE, SHAPE>>; onConflictOnConstraint: OnConflictOnConstraintFnType<TABLE, OnConflictDoSimpleInsert<TABLE, SHAPE>>; } export interface OnConflictDoSimpleInsert<TABLE extends ITableOrView<any>, SHAPE> { doNothing: OnConflictDoNothingFnType<TABLE, CustomizableExecutableSimpleInsertOnConflictOptional<TABLE>>; doUpdateDynamicSet: OnConflictDoUpdateDynamicSetFnType<TABLE, SHAPE, CustomizableExecutableSimpleInsertOnConflict<TABLE>, CustomizableExecutableSimpleInsertOnConflictOptional<TABLE>>; doUpdateSet: OnConflictDoUpdateSetFnType<TABLE, SHAPE, CustomizableExecutableSimpleInsertOnConflict<TABLE>, CustomizableExecutableSimpleInsertOnConflictOptional<TABLE>>; doUpdateSetIfValue: OnConflictDoUpdateSetFnType<TABLE, SHAPE, CustomizableExecutableSimpleInsertOnConflict<TABLE>, CustomizableExecutableSimpleInsertOnConflictOptional<TABLE>>; } export interface CustomizableExecutableMultipleInsertOnConfict<TABLE extends ITableOrView<any>> extends CustomizableExecutableInsert<TABLE> { returningLastInsertedId: ReturningMultipleLastInsertedIdType<TABLE>; returning: ReturningFnType<TABLE>; returningOneColumn: ReturningOneColumnFnType<TABLE>; } export interface CustomizableExecutableMultipleInsertOnConfictOptional<TABLE extends ITableOrView<any>> extends CustomizableExecutableInsert<TABLE> { returningLastInsertedId: ReturningMultipleLastInsertedIdOptionalType<TABLE>; returning: ReturningOptionalFnType<TABLE>; returningOneColumn: ReturningOneColumnOptionalFnType<TABLE>; } export interface CustomizableExecutableMultipleInsert<TABLE extends ITableOrView<any>, SHAPE> extends CustomizableExecutableInsert<TABLE> { returningLastInsertedId: ReturningMultipleLastInsertedIdType<TABLE>; returning: ReturningFnType<TABLE>; returningOneColumn: ReturningOneColumnFnType<TABLE>; onConflictDoNothing: OnConflictDoNothingFnType<TABLE, CustomizableExecutableMultipleInsertOnConfict<TABLE>>; onConflictDoUpdateDynamicSet: OnConflictDoUpdateDynamicSetFnType<TABLE, SHAPE, CustomizableExecutableMultipleInsertOnConfict<TABLE>, CustomizableExecutableMultipleInsertOnConfictOptional<TABLE>>; onConflictDoUpdateSet: OnConflictDoUpdateSetFnType<TABLE, SHAPE, CustomizableExecutableMultipleInsertOnConfict<TABLE>, CustomizableExecutableMultipleInsertOnConfictOptional<TABLE>>; onConflictDoUpdateSetIfValue: OnConflictDoUpdateSetFnType<TABLE, SHAPE, CustomizableExecutableMultipleInsertOnConfict<TABLE>, CustomizableExecutableMultipleInsertOnConfictOptional<TABLE>>; onConflictOn: OnConflictOnColumnFnType<TABLE, OnConflictDoMultipleInsert<TABLE, SHAPE>>; onConflictOnConstraint: OnConflictOnConstraintFnType<TABLE, OnConflictDoMultipleInsert<TABLE, SHAPE>>; } export interface OnConflictDoMultipleInsert<TABLE extends ITableOrView<any>, SHAPE> { doNothing: OnConflictDoNothingFnType<TABLE, CustomizableExecutableMultipleInsertOnConfictOptional<TABLE>>; doUpdateDynamicSet: OnConflictDoUpdateDynamicSetFnType<TABLE, SHAPE, CustomizableExecutableMultipleInsertOnConfict<TABLE>, CustomizableExecutableMultipleInsertOnConfictOptional<TABLE>>; doUpdateSet: OnConflictDoUpdateSetFnType<TABLE, SHAPE, CustomizableExecutableMultipleInsertOnConfict<TABLE>, CustomizableExecutableMultipleInsertOnConfictOptional<TABLE>>; doUpdateSetIfValue: OnConflictDoUpdateSetFnType<TABLE, SHAPE, CustomizableExecutableMultipleInsertOnConfict<TABLE>, CustomizableExecutableMultipleInsertOnConfictOptional<TABLE>>; } export interface ExecutableInsertExpression<TABLE extends ITableOrView<any>> extends CustomizableExecutableSimpleInsert<TABLE, undefined> { set(columns: InsertSets<TABLE, undefined>): ExecutableInsertExpression<TABLE>; setIfValue(columns: OptionalInsertSets<TABLE, undefined>): ExecutableInsertExpression<TABLE>; setIfSet(columns: InsertSets<TABLE, undefined>): ExecutableInsertExpression<TABLE>; setIfSetIfValue(columns: OptionalInsertSets<TABLE, undefined>): ExecutableInsertExpression<TABLE>; setIfNotSet(columns: InsertSets<TABLE, undefined>): ExecutableInsertExpression<TABLE>; setIfNotSetIfValue(columns: OptionalInsertSets<TABLE, undefined>): ExecutableInsertExpression<TABLE>; ignoreIfSet<COLUMNS extends ColumnsForSetOf<TABLE>>(...columns: COLUMNS[]): MaybeExecutableInsertExpression<TABLE, COLUMNS & RequiredColumnsForSetOf<TABLE>>; keepOnly<COLUMNS extends ColumnsForSetOf<TABLE>>(...columns: COLUMNS[]): MaybeExecutableInsertExpression<TABLE, Exclude<RequiredColumnsForSetOf<TABLE>, COLUMNS>>; setIfHasValue(columns: InsertSets<TABLE, undefined>): ExecutableInsertExpression<TABLE>; setIfHasValueIfValue(columns: OptionalInsertSets<TABLE, undefined>): ExecutableInsertExpression<TABLE>; setIfHasNoValue(columns: InsertSets<TABLE, undefined>): ExecutableInsertExpression<TABLE>; setIfHasNoValueIfValue(columns: OptionalInsertSets<TABLE, undefined>): ExecutableInsertExpression<TABLE>; ignoreIfHasValue(...columns: OptionalColumnsForSetOf<TABLE>[]): ExecutableInsertExpression<TABLE>; ignoreIfHasNoValue(...columns: OptionalColumnsForSetOf<TABLE>[]): ExecutableInsertExpression<TABLE>; ignoreAnySetWithNoValue(): ExecutableInsertExpression<TABLE>; disallowIfSet(errorMessage: string, ...columns: ColumnsForSetOf<TABLE>[]): ExecutableInsertExpression<TABLE>; disallowIfSet(error: Error, ...columns: ColumnsForSetOf<TABLE>[]): ExecutableInsertExpression<TABLE>; disallowIfNotSet(errorMessage: string, ...columns: ColumnsForSetOf<TABLE>[]): ExecutableInsertExpression<TABLE>; disallowIfNotSet(error: Error, ...columns: ColumnsForSetOf<TABLE>[]): ExecutableInsertExpression<TABLE>; disallowIfValue(errorMessage: string, ...columns: ColumnsForSetOf<TABLE>[]): ExecutableInsertExpression<TABLE>; disallowIfValue(error: Error, ...columns: ColumnsForSetOf<TABLE>[]): ExecutableInsertExpression<TABLE>; disallowIfNoValue(errorMessage: string, ...columns: ColumnsForSetOf<TABLE>[]): ExecutableInsertExpression<TABLE>; disallowIfNoValue(error: Error, ...columns: ColumnsForSetOf<TABLE>[]): ExecutableInsertExpression<TABLE>; disallowAnyOtherSet(errorMessage: string, ...columns: ColumnsForSetOf<TABLE>[]): ExecutableInsertExpression<TABLE>; disallowAnyOtherSet(error: Error, ...columns: ColumnsForSetOf<TABLE>[]): ExecutableInsertExpression<TABLE>; setWhen(when: boolean, columns: InsertSets<TABLE, undefined>): ExecutableInsertExpression<TABLE>; setIfValueWhen(when: boolean, columns: OptionalInsertSets<TABLE, undefined>): ExecutableInsertExpression<TABLE>; setIfSetWhen(when: boolean, columns: InsertSets<TABLE, undefined>): ExecutableInsertExpression<TABLE>; setIfSetIfValueWhen(when: boolean, columns: OptionalInsertSets<TABLE, undefined>): ExecutableInsertExpression<TABLE>; setIfNotSetWhen(when: boolean, columns: InsertSets<TABLE, undefined>): ExecutableInsertExpression<TABLE>; setIfNotSetIfValueWhen(when: boolean, columns: OptionalInsertSets<TABLE, undefined>): ExecutableInsertExpression<TABLE>; ignoreIfSetWhen<COLUMNS extends ColumnsForSetOf<TABLE>>(when: boolean, ...columns: COLUMNS[]): MaybeExecutableInsertExpression<TABLE, COLUMNS & RequiredColumnsForSetOf<TABLE>>; keepOnlyWhen<COLUMNS extends ColumnsForSetOf<TABLE>>(when: boolean, ...columns: COLUMNS[]): MaybeExecutableInsertExpression<TABLE, Exclude<RequiredColumnsForSetOf<TABLE>, COLUMNS>>; setIfHasValueWhen(when: boolean, columns: InsertSets<TABLE, undefined>): ExecutableInsertExpression<TABLE>; setIfHasValueIfValueWhen(when: boolean, columns: OptionalInsertSets<TABLE, undefined>): ExecutableInsertExpression<TABLE>; setIfHasNoValueWhen(when: boolean, columns: InsertSets<TABLE, undefined>): ExecutableInsertExpression<TABLE>; setIfHasNoValueIfValueWhen(when: boolean, columns: OptionalInsertSets<TABLE, undefined>): ExecutableInsertExpression<TABLE>; ignoreIfHasValueWhen(when: boolean, ...columns: OptionalColumnsForSetOf<TABLE>[]): ExecutableInsertExpression<TABLE>; ignoreIfHasNoValueWhen(when: boolean, ...columns: OptionalColumnsForSetOf<TABLE>[]): ExecutableInsertExpression<TABLE>; ignoreAnySetWithNoValueWhen(when: boolean): ExecutableInsertExpression<TABLE>; disallowIfSetWhen(when: boolean, errorMessage: string, ...columns: ColumnsForSetOf<TABLE>[]): ExecutableInsertExpression<TABLE>; disallowIfSetWhen(when: boolean, error: Error, ...columns: ColumnsForSetOf<TABLE>[]): ExecutableInsertExpression<TABLE>; disallowIfNotSetWhen(when: boolean, errorMessage: string, ...columns: ColumnsForSetOf<TABLE>[]): ExecutableInsertExpression<TABLE>; disallowIfNotSetWhen(when: boolean, error: Error, ...columns: ColumnsForSetOf<TABLE>[]): ExecutableInsertExpression<TABLE>; disallowIfValueWhen(when: boolean, errorMessage: string, ...columns: ColumnsForSetOf<TABLE>[]): ExecutableInsertExpression<TABLE>; disallowIfValueWhen(when: boolean, error: Error, ...columns: ColumnsForSetOf<TABLE>[]): ExecutableInsertExpression<TABLE>; disallowIfNoValueWhen(when: boolean, errorMessage: string, ...columns: ColumnsForSetOf<TABLE>[]): ExecutableInsertExpression<TABLE>; disallowIfNoValueWhen(when: boolean, error: Error, ...columns: ColumnsForSetOf<TABLE>[]): ExecutableInsertExpression<TABLE>; disallowAnyOtherSetWhen(when: boolean, errorMessage: string, ...columns: ColumnsForSetOf<TABLE>[]): ExecutableInsertExpression<TABLE>; disallowAnyOtherSetWhen(when: boolean, error: Error, ...columns: ColumnsForSetOf<TABLE>[]): ExecutableInsertExpression<TABLE>; } export interface ShapedExecutableInsertExpression<TABLE extends ITableOrView<any>, SHAPE> extends CustomizableExecutableSimpleInsert<TABLE, SHAPE> { extendShape<EXTEND_SHAPE extends InsertShape<TABLE>>(shape: EXTEND_SHAPE): MaybeShapedExecutableInsertExpression<TABLE, SHAPE & ResolveShape<TABLE, EXTEND_SHAPE>, keyof EXTEND_SHAPE, never>; set(columns: InsertSets<TABLE, SHAPE>): ShapedExecutableInsertExpression<TABLE, SHAPE>; setIfValue(columns: OptionalInsertSets<TABLE, SHAPE>): ShapedExecutableInsertExpression<TABLE, SHAPE>; setIfSet(columns: InsertSets<TABLE, SHAPE>): ShapedExecutableInsertExpression<TABLE, SHAPE>; setIfSetIfValue(columns: OptionalInsertSets<TABLE, SHAPE>): ShapedExecutableInsertExpression<TABLE, SHAPE>; setIfNotSet(columns: InsertSets<TABLE, SHAPE>): ShapedExecutableInsertExpression<TABLE, SHAPE>; setIfNotSetIfValue(columns: OptionalInsertSets<TABLE, SHAPE>): ShapedExecutableInsertExpression<TABLE, SHAPE>; ignoreIfSet<COLUMNS extends ColumnsForSetOfWithShape<TABLE, SHAPE>>(...columns: COLUMNS[]): MaybeShapedExecutableInsertExpression<TABLE, SHAPE, COLUMNS & RequiredColumnsForSetOfWithShape<TABLE, SHAPE>, never>; keepOnly<COLUMNS extends ColumnsForSetOfWithShape<TABLE, SHAPE>>(...columns: COLUMNS[]): MaybeShapedExecutableInsertExpression<TABLE, SHAPE, Exclude<RequiredColumnsForSetOfWithShape<TABLE, SHAPE>, COLUMNS>, never>; setIfHasValue(columns: InsertSets<TABLE, SHAPE>): ShapedExecutableInsertExpression<TABLE, SHAPE>; setIfHasValueIfValue(columns: OptionalInsertSets<TABLE, SHAPE>): ShapedExecutableInsertExpression<TABLE, SHAPE>; setIfHasNoValue(columns: InsertSets<TABLE, SHAPE>): ShapedExecutableInsertExpression<TABLE, SHAPE>; setIfHasNoValueIfValue(columns: OptionalInsertSets<TABLE, SHAPE>): ShapedExecutableInsertExpression<TABLE, SHAPE>; ignoreIfHasValue(...columns: OptionalColumnsForSetOfWithShape<TABLE, SHAPE>[]): ShapedExecutableInsertExpression<TABLE, SHAPE>; ignoreIfHasNoValue(...columns: OptionalColumnsForSetOfWithShape<TABLE, SHAPE>[]): ShapedExecutableInsertExpression<TABLE, SHAPE>; ignoreAnySetWithNoValue(): ShapedExecutableInsertExpression<TABLE, SHAPE>; disallowIfSet(errorMessage: string, ...columns: ColumnsForSetOfWithShape<TABLE, SHAPE>[]): ShapedExecutableInsertExpression<TABLE, SHAPE>; disallowIfSet(error: Error, ...columns: ColumnsForSetOfWithShape<TABLE, SHAPE>[]): ShapedExecutableInsertExpression<TABLE, SHAPE>; disallowIfNotSet(errorMessage: string, ...columns: ColumnsForSetOfWithShape<TABLE, SHAPE>[]): ShapedExecutableInsertExpression<TABLE, SHAPE>; disallowIfNotSet(error: Error, ...columns: ColumnsForSetOfWithShape<TABLE, SHAPE>[]): ShapedExecutableInsertExpression<TABLE, SHAPE>; disallowIfValue(errorMessage: string, ...columns: ColumnsForSetOfWithShape<TABLE, SHAPE>[]): ShapedExecutableInsertExpression<TABLE, SHAPE>; disallowIfValue(error: Error, ...columns: ColumnsForSetOfWithShape<TABLE, SHAPE>[]): ShapedExecutableInsertExpression<TABLE, SHAPE>; disallowIfNoValue(errorMessage: string, ...columns: ColumnsForSetOfWithShape<TABLE, SHAPE>[]): ShapedExecutableInsertExpression<TABLE, SHAPE>; disallowIfNoValue(error: Error, ...columns: ColumnsForSetOfWithShape<TABLE, SHAPE>[]): ShapedExecutableInsertExpression<TABLE, SHAPE>; disallowAnyOtherSet(errorMessage: string, ...columns: ColumnsForSetOfWithShape<TABLE, SHAPE>[]): ShapedExecutableInsertExpression<TABLE, SHAPE>; disallowAnyOtherSet(error: Error, ...columns: ColumnsForSetOfWithShape<TABLE, SHAPE>[]): ShapedExecutableInsertExpression<TABLE, SHAPE>; setWhen(when: boolean, columns: InsertSets<TABLE, SHAPE>): ShapedExecutableInsertExpression<TABLE, SHAPE>; setIfValueWhen(when: boolean, columns: OptionalInsertSets<TABLE, SHAPE>): ShapedExecutableInsertExpression<TABLE, SHAPE>; setIfSetWhen(when: boolean, columns: InsertSets<TABLE, SHAPE>): ShapedExecutableInsertExpression<TABLE, SHAPE>; setIfSetIfValueWhen(when: boolean, columns: OptionalInsertSets<TABLE, SHAPE>): ShapedExecutableInsertExpression<TABLE, SHAPE>; setIfNotSetWhen(when: boolean, columns: InsertSets<TABLE, SHAPE>): ShapedExecutableInsertExpression<TABLE, SHAPE>; setIfNotSetIfValueWhen(when: boolean, columns: OptionalInsertSets<TABLE, SHAPE>): ShapedExecutableInsertExpression<TABLE, SHAPE>; ignoreIfSetWhen<COLUMNS extends ColumnsForSetOfWithShape<TABLE, SHAPE>>(when: boolean, ...columns: COLUMNS[]): MaybeShapedExecutableInsertExpression<TABLE, SHAPE, COLUMNS & RequiredColumnsForSetOfWithShape<TABLE, SHAPE>, never>; keepOnlyWhen<COLUMNS extends ColumnsForSetOfWithShape<TABLE, SHAPE>>(when: boolean, ...columns: COLUMNS[]): MaybeShapedExecutableInsertExpression<TABLE, SHAPE, Exclude<RequiredColumnsForSetOfWithShape<TABLE, SHAPE>, COLUMNS>, never>; setIfHasValueWhen(when: boolean, columns: InsertSets<TABLE, SHAPE>): ShapedExecutableInsertExpression<TABLE, SHAPE>; setIfHasValueIfValueWhen(when: boolean, columns: OptionalInsertSets<TABLE, SHAPE>): ShapedExecutableInsertExpression<TABLE, SHAPE>; setIfHasNoValueWhen(when: boolean, columns: InsertSets<TABLE, SHAPE>): ShapedExecutableInsertExpression<TABLE, SHAPE>; setIfHasNoValueIfValueWhen(when: boolean, columns: OptionalInsertSets<TABLE, SHAPE>): ShapedExecutableInsertExpression<TABLE, SHAPE>; ignoreIfHasValueWhen(when: boolean, ...columns: OptionalColumnsForSetOfWithShape<TABLE, SHAPE>[]): ShapedExecutableInsertExpression<TABLE, SHAPE>; ignoreIfHasNoValueWhen(when: boolean, ...columns: OptionalColumnsForSetOfWithShape<TABLE, SHAPE>[]): ShapedExecutableInsertExpression<TABLE, SHAPE>; ignoreAnySetWithNoValueWhen(when: boolean): ShapedExecutableInsertExpression<TABLE, SHAPE>; disallowIfSetWhen(when: boolean, errorMessage: string, ...columns: ColumnsForSetOfWithShape<TABLE, SHAPE>[]): ShapedExecutableInsertExpression<TABLE, SHAPE>; disallowIfSetWhen(when: boolean, error: Error, ...columns: ColumnsForSetOfWithShape<TABLE, SHAPE>[]): ShapedExecutableInsertExpression<TABLE, SHAPE>; disallowIfNotSetWhen(when: boolean, errorMessage: string, ...columns: ColumnsForSetOfWithShape<TABLE, SHAPE>[]): ShapedExecutableInsertExpression<TABLE, SHAPE>; disallowIfNotSetWhen(when: boolean, error: Error, ...columns: ColumnsForSetOfWithShape<TABLE, SHAPE>[]): ShapedExecutableInsertExpression<TABLE, SHAPE>; disallowIfValueWhen(when: boolean, errorMessage: string, ...columns: ColumnsForSetOfWithShape<TABLE, SHAPE>[]): ShapedExecutableInsertExpression<TABLE, SHAPE>; disallowIfValueWhen(when: boolean, error: Error, ...columns: ColumnsForSetOfWithShape<TABLE, SHAPE>[]): ShapedExecutableInsertExpression<TABLE, SHAPE>; disallowIfNoValueWhen(when: boolean, errorMessage: string, ...columns: ColumnsForSetOfWithShape<TABLE, SHAPE>[]): ShapedExecutableInsertExpression<TABLE, SHAPE>; disallowIfNoValueWhen(when: boolean, error: Error, ...columns: ColumnsForSetOfWithShape<TABLE, SHAPE>[]): ShapedExecutableInsertExpression<TABLE, SHAPE>; disallowAnyOtherSetWhen(when: boolean, errorMessage: string, ...columns: ColumnsForSetOfWithShape<TABLE, SHAPE>[]): ShapedExecutableInsertExpression<TABLE, SHAPE>; disallowAnyOtherSetWhen(when: boolean, error: Error, ...columns: ColumnsForSetOfWithShape<TABLE, SHAPE>[]): ShapedExecutableInsertExpression<TABLE, SHAPE>; } export interface MissingKeysInsertExpression<TABLE extends ITableOrView<any>, MISSING_KEYS> extends InsertExpressionBase<TABLE> { set<COLUMNS extends InsertSets<TABLE, undefined>>(columns: COLUMNS): MaybeExecutableInsertExpression<TABLE, Exclude<MISSING_KEYS, NonOptionalKeys<COLUMNS>>>; setIfValue<COLUMNS extends OptionalInsertSets<TABLE, undefined>>(columns: COLUMNS): MaybeExecutableInsertExpression<TABLE, Exclude<MISSING_KEYS, NonOptionalKeys<COLUMNS>>>; setIfSet<COLUMNS extends InsertSets<TABLE, undefined>>(columns: COLUMNS): MaybeExecutableInsertExpression<TABLE, Exclude<MISSING_KEYS, NonOptionalKeys<COLUMNS>>>; setIfSetIfValue<COLUMNS extends OptionalInsertSets<TABLE, undefined>>(columns: COLUMNS): MaybeExecutableInsertExpression<TABLE, Exclude<MISSING_KEYS, NonOptionalKeys<COLUMNS>>>; setIfNotSet<COLUMNS extends InsertSets<TABLE, undefined>>(columns: COLUMNS): MaybeExecutableInsertExpression<TABLE, Exclude<MISSING_KEYS, NonOptionalKeys<COLUMNS>>>; setIfNotSetIfValue<COLUMNS extends OptionalInsertSets<TABLE, undefined>>(columns: COLUMNS): MaybeExecutableInsertExpression<TABLE, Exclude<MISSING_KEYS, NonOptionalKeys<COLUMNS>>>; ignoreIfSet<COLUMNS extends ColumnsForSetOf<TABLE>>(...columns: COLUMNS[]): MissingKeysInsertExpression<TABLE, (COLUMNS & RequiredColumnsForSetOf<TABLE>) | MISSING_KEYS>; keepOnly<COLUMNS extends ColumnsForSetOf<TABLE>>(...columns: COLUMNS[]): MissingKeysInsertExpression<TABLE, Exclude<RequiredColumnsForSetOf<TABLE>, COLUMNS> | MISSING_KEYS>; setIfHasValue<COLUMNS extends InsertSets<TABLE, undefined>>(columns: COLUMNS): MaybeExecutableInsertExpression<TABLE, Exclude<MISSING_KEYS, NonOptionalKeys<COLUMNS>>>; setIfHasValueIfValue<COLUMNS extends OptionalInsertSets<TABLE, undefined>>(columns: COLUMNS): MaybeExecutableInsertExpression<TABLE, Exclude<MISSING_KEYS, NonOptionalKeys<COLUMNS>>>; setIfHasNoValue<COLUMNS extends InsertSets<TABLE, undefined>>(columns: COLUMNS): MaybeExecutableInsertExpression<TABLE, Exclude<MISSING_KEYS, NonOptionalKeys<COLUMNS>>>; setIfHasNoValueIfValue<COLUMNS extends OptionalInsertSets<TABLE, undefined>>(columns: COLUMNS): MaybeExecutableInsertExpression<TABLE, Exclude<MISSING_KEYS, NonOptionalKeys<COLUMNS>>>; ignoreIfHasValue(...columns: OptionalColumnsForSetOf<TABLE>[]): MissingKeysInsertExpression<TABLE, MISSING_KEYS>; ignoreIfHasNoValue(...columns: OptionalColumnsForSetOf<TABLE>[]): MissingKeysInsertExpression<TABLE, MISSING_KEYS>; ignoreAnySetWithNoValue(): MissingKeysInsertExpression<TABLE, MISSING_KEYS>; disallowIfSet(errorMessage: string, ...columns: ColumnsForSetOf<TABLE>[]): MissingKeysInsertExpression<TABLE, MISSING_KEYS>; disallowIfSet(error: Error, ...columns: ColumnsForSetOf<TABLE>[]): MissingKeysInsertExpression<TABLE, MISSING_KEYS>; disallowIfNotSet(errorMessage: string, ...columns: ColumnsForSetOf<TABLE>[]): MissingKeysInsertExpression<TABLE, MISSING_KEYS>; disallowIfNotSet(error: Error, ...columns: ColumnsForSetOf<TABLE>[]): MissingKeysInsertExpression<TABLE, MISSING_KEYS>; disallowIfValue(errorMessage: string, ...columns: ColumnsForSetOf<TABLE>[]): MissingKeysInsertExpression<TABLE, MISSING_KEYS>; disallowIfValue(error: Error, ...columns: ColumnsForSetOf<TABLE>[]): MissingKeysInsertExpression<TABLE, MISSING_KEYS>; disallowIfNoValue<COLUMNS extends ColumnsForSetOf<TABLE>>(errorMessage: string, ...columns: COLUMNS[]): MissingKeysInsertExpression<TABLE, Exclude<MISSING_KEYS, COLUMNS>>; disallowIfNoValue<COLUMNS extends ColumnsForSetOf<TABLE>>(error: Error, ...columns: COLUMNS[]): MissingKeysInsertExpression<TABLE, Exclude<MISSING_KEYS, COLUMNS>>; disallowAnyOtherSet(errorMessage: string, ...columns: ColumnsForSetOf<TABLE>[]): MissingKeysInsertExpression<TABLE, MISSING_KEYS>; disallowAnyOtherSet(error: Error, ...columns: ColumnsForSetOf<TABLE>[]): MissingKeysInsertExpression<TABLE, MISSING_KEYS>; setWhen(when: boolean, columns: InsertSets<TABLE, undefined>): MissingKeysInsertExpression<TABLE, MISSING_KEYS>; setIfValueWhen(when: boolean, columns: OptionalInsertSets<TABLE, undefined>): MissingKeysInsertExpression<TABLE, MISSING_KEYS>; setIfSetWhen(when: boolean, columns: InsertSets<TABLE, undefined>): MissingKeysInsertExpression<TABLE, MISSING_KEYS>; setIfSetIfValueWhen(when: boolean, columns: OptionalInsertSets<TABLE, undefined>): MissingKeysInsertExpression<TABLE, MISSING_KEYS>; setIfNotSetWhen(when: boolean, columns: InsertSets<TABLE, undefined>): MissingKeysInsertExpression<TABLE, MISSING_KEYS>; setIfNotSetIfValueWhen(when: boolean, columns: OptionalInsertSets<TABLE, undefined>): MissingKeysInsertExpression<TABLE, MISSING_KEYS>; ignoreIfSetWhen<COLUMNS extends ColumnsForSetOf<TABLE>>(when: boolean, ...columns: COLUMNS[]): MissingKeysInsertExpression<TABLE, (COLUMNS & RequiredColumnsForSetOf<TABLE>) | MISSING_KEYS>; keepOnlyWhen<COLUMNS extends ColumnsForSetOf<TABLE>>(when: boolean, ...columns: COLUMNS[]): MissingKeysInsertExpression<TABLE, Exclude<RequiredColumnsForSetOf<TABLE> | MISSING_KEYS, COLUMNS>>; setIfHasValueWhen(when: boolean, columns: InsertSets<TABLE, undefined>): MissingKeysInsertExpression<TABLE, MISSING_KEYS>; setIfHasValueIfValueWhen(when: boolean, columns: OptionalInsertSets<TABLE, undefined>): MissingKeysInsertExpression<TABLE, MISSING_KEYS>; setIfHasNoValueWhen(when: boolean, columns: InsertSets<TABLE, undefined>): MissingKeysInsertExpression<TABLE, MISSING_KEYS>; setIfHasNoValueIfValueWhen(when: boolean, columns: OptionalInsertSets<TABLE, undefined>): MissingKeysInsertExpression<TABLE, MISSING_KEYS>; ignoreIfHasValueWhen(when: boolean, ...columns: OptionalColumnsForSetOf<TABLE>[]): MissingKeysInsertExpression<TABLE, MISSING_KEYS>; ignoreIfHasNoValueWhen(when: boolean, ...columns: OptionalColumnsForSetOf<TABLE>[]): MissingKeysInsertExpression<TABLE, MISSING_KEYS>; ignoreAnySetWithNoValueWhen(when: boolean): MissingKeysInsertExpression<TABLE, MISSING_KEYS>; disallowIfSetWhen(when: boolean, errorMessage: string, ...columns: ColumnsForSetOf<TABLE>[]): MissingKeysInsertExpression<TABLE, MISSING_KEYS>; disallowIfSetWhen(when: boolean, error: Error, ...columns: ColumnsForSetOf<TABLE>[]): MissingKeysInsertExpression<TABLE, MISSING_KEYS>; disallowIfNotSetWhen(when: boolean, errorMessage: string, ...columns: ColumnsForSetOf<TABLE>[]): MissingKeysInsertExpression<TABLE, MISSING_KEYS>; disallowIfNotSetWhen(when: boolean, error: Error, ...columns: ColumnsForSetOf<TABLE>[]): MissingKeysInsertExpression<TABLE, MISSING_KEYS>; disallowIfValueWhen(when: boolean, errorMessage: string, ...columns: ColumnsForSetOf<TABLE>[]): MissingKeysInsertExpression<TABLE, MISSING_KEYS>; disallowIfValueWhen(when: boolean, error: Error, ...columns: ColumnsForSetOf<TABLE>[]): MissingKeysInsertExpression<TABLE, MISSING_KEYS>; disallowIfNoValueWhen(when: boolean, errorMessage: string, ...columns: ColumnsForSetOf<TABLE>[]): MissingKeysInsertExpression<TABLE, MISSING_KEYS>; disallowIfNoValueWhen(when: boolean, error: Error, ...columns: ColumnsForSetOf<TABLE>[]): MissingKeysInsertExpression<TABLE, MISSING_KEYS>; disallowAnyOtherSetWhen(when: boolean, errorMessage: string, ...columns: ColumnsForSetOf<TABLE>[]): MissingKeysInsertExpression<TABLE, MISSING_KEYS>; disallowAnyOtherSetWhen(when: boolean, error: Error, ...columns: ColumnsForSetOf<TABLE>[]): MissingKeysInsertExpression<TABLE, MISSING_KEYS>; } export interface ShapedMissingKeysInsertExpression<TABLE extends ITableOrView<any>, SHAPE, MISSING_KEYS, MISSING_KEYS_IN_SHAPE> extends InsertExpressionBase<TABLE> { extendShape<EXTEND_SHAPE extends InsertShape<TABLE>>(shape: EXTEND_SHAPE): ShapedMissingKeysInsertExpression<TABLE, SHAPE & ResolveShape<TABLE, EXTEND_SHAPE>, MISSING_KEYS | keyof EXTEND_SHAPE, Exclude<MISSING_KEYS_IN_SHAPE, EXTEND_SHAPE[keyof EXTEND_SHAPE]>>; set<COLUMNS extends InsertSets<TABLE, SHAPE>>(columns: COLUMNS): MaybeShapedExecutableInsertExpression<TABLE, SHAPE, Exclude<MISSING_KEYS, NonOptionalKeys<COLUMNS>>, MISSING_KEYS_IN_SHAPE>; setIfValue<COLUMNS extends OptionalInsertSets<TABLE, SHAPE>>(columns: COLUMNS): MaybeShapedExecutableInsertExpression<TABLE, SHAPE, Exclude<MISSING_KEYS, NonOptionalKeys<COLUMNS>>, MISSING_KEYS_IN_SHAPE>; setIfSet<COLUMNS extends InsertSets<TABLE, SHAPE>>(columns: COLUMNS): MaybeShapedExecutableInsertExpression<TABLE, SHAPE, Exclude<MISSING_KEYS, NonOptionalKeys<COLUMNS>>, MISSING_KEYS_IN_SHAPE>; setIfSetIfValue<COLUMNS extends OptionalInsertSets<TABLE, SHAPE>>(columns: COLUMNS): MaybeShapedExecutableInsertExpression<TABLE, SHAPE, Exclude<MISSING_KEYS, NonOptionalKeys<COLUMNS>>, MISSING_KEYS_IN_SHAPE>; setIfNotSet<COLUMNS extends InsertSets<TABLE, SHAPE>>(columns: COLUMNS): MaybeShapedExecutableInsertExpression<TABLE, SHAPE, Exclude<MISSING_KEYS, NonOptionalKeys<COLUMNS>>, MISSING_KEYS_IN_SHAPE>; setIfNotSetIfValue<COLUMNS extends OptionalInsertSets<TABLE, SHAPE>>(columns: COLUMNS): MaybeShapedExecutableInsertExpression<TABLE, SHAPE, Exclude<MISSING_KEYS, NonOptionalKeys<COLUMNS>>, MISSING_KEYS_IN_SHAPE>; ignoreIfSet<COLUMNS extends ColumnsForSetOfWithShape<TABLE, SHAPE>>(...columns: COLUMNS[]): ShapedMissingKeysInsertExpression<TABLE, SHAPE, (COLUMNS & RequiredColumnsForSetOfWithShape<TABLE, SHAPE>) | MISSING_KEYS, MISSING_KEYS_IN_SHAPE>; keepOnly<COLUMNS extends ColumnsForSetOfWithShape<TABLE, SHAPE>>(...columns: COLUMNS[]): ShapedMissingKeysInsertExpression<TABLE, SHAPE, Exclude<RequiredColumnsForSetOfWithShape<TABLE, SHAPE>, COLUMNS> | MISSING_KEYS, MISSING_KEYS_IN_SHAPE>; setIfHasValue<COLUMNS extends InsertSets<TABLE, SHAPE>>(columns: COLUMNS): MaybeShapedExecutableInsertExpression<TABLE, SHAPE, Exclude<MISSING_KEYS, NonOptionalKeys<COLUMNS>>, MISSING_KEYS_IN_SHAPE>; setIfHasValueIfValue<COLUMNS extends OptionalInsertSets<TABLE, SHAPE>>(columns: COLUMNS): MaybeShapedExecutableInsertExpression<TABLE, SHAPE, Exclude<MISSING_KEYS, NonOptionalKeys<COLUMNS>>, MISSING_KEYS_IN_SHAPE>; setIfHasNoValue<COLUMNS extends InsertSets<TABLE, SHAPE>>(columns: COLUMNS): MaybeShapedExecutableInsertExpression<TABLE, SHAPE, Exclude<MISSING_KEYS, NonOptionalKeys<COLUMNS>>, MISSING_KEYS_IN_SHAPE>; setIfHasNoValueIfValue<COLUMNS extends OptionalInsertSets<TABLE, SHAPE>>(columns: COLUMNS): MaybeShapedExecutableInsertExpression<TABLE, SHAPE, Exclude<MISSING_KEYS, NonOptionalKeys<COLUMNS>>, MISSING_KEYS_IN_SHAPE>; ignoreIfHasValue(...columns: OptionalColumnsForSetOfWithShape<TABLE, SHAPE>[]): ShapedMissingKeysInsertExpression<TABLE, SHAPE, MISSING_KEYS, MISSING_KEYS_IN_SHAPE>; ignoreIfHasNoValue(...columns: OptionalColumnsForSetOfWithShape<TABLE, SHAPE>[]): ShapedMissingKeysInsertExpression<TABLE, SHAPE, MISSING_KEYS, MISSING_KEYS_IN_SHAPE>; ignoreAnySetWithNoValue(): ShapedMissingKeysInsertExpression<TABLE, SHAPE, MISSING_KEYS, MISSING_KEYS_IN_SHAPE>; disallowIfSet(errorMessage: string, ...columns: ColumnsForSetOfWithShape<TABLE, SHAPE>[]): ShapedMissingKeysInsertExpression<TABLE, SHAPE, MISSING_KEYS, MISSING_KEYS_IN_SHAPE>; disallowIfSet(error: Error, ...columns: ColumnsForSetOfWithShape<TABLE, SHAPE>[]): ShapedMissingKeysInsertExpression<TABLE, SHAPE, MISSING_KEYS, MISSING_KEYS_IN_SHAPE>; disallowIfNotSet(errorMessage: string, ...columns: ColumnsForSetOfWithShape<TABLE, SHAPE>[]): ShapedMissingKeysInsertExpression<TABLE, SHAPE, MISSING_KEYS, MISSING_KEYS_IN_SHAPE>; disallowIfNotSet(error: Error, ...columns: ColumnsForSetOfWithShape<TABLE, SHAPE>[]): ShapedMissingKeysInsertExpression<TABLE, SHAPE, MISSING_KEYS, MISSING_KEYS_IN_SHAPE>; disallowIfValue(errorMessage: string, ...columns: ColumnsForSetOfWithShape<TABLE, SHAPE>[]): ShapedMissingKeysInsertExpression<TABLE, SHAPE, MISSING_KEYS, MISSING_KEYS_IN_SHAPE>; disallowIfValue(error: Error, ...columns: ColumnsForSetOfWithShape<TABLE, SHAPE>[]): ShapedMissingKeysInsertExpression<TABLE, SHAPE, MISSING_KEYS, MISSING_KEYS_IN_SHAPE>; disallowIfNoValue<COLUMNS extends ColumnsForSetOfWithShape<TABLE, SHAPE>>(errorMessage: string, ...columns: COLUMNS[]): ShapedMissingKeysInsertExpression<TABLE, SHAPE, Exclude<MISSING_KEYS, COLUMNS>, MISSING_KEYS_IN_SHAPE>; disallowIfNoValue<COLUMNS extends ColumnsForSetOfWithShape<TABLE, SHAPE>>(error: Error, ...columns: COLUMNS[]): ShapedMissingKeysInsertExpression<TABLE, SHAPE, Exclude<MISSING_KEYS, COLUMNS>, MISSING_KEYS_IN_SHAPE>; disallowAnyOtherSet(errorMessage: string, ...columns: ColumnsForSetOfWithShape<TABLE, SHAPE>[]): ShapedMissingKeysInsertExpression<TABLE, SHAPE, MISSING_KEYS, MISSING_KEYS_IN_SHAPE>; disallowAnyOtherSet(error: Error, ...columns: ColumnsForSetOfWithShape<TABLE, SHAPE>[]): ShapedMissingKeysInsertExpression<TABLE, SHAPE, MISSING_KEYS, MISSING_KEYS_IN_SHAPE>; setWhen(when: boolean, columns: InsertSets<TABLE, SHAPE>): ShapedMissingKeysInsertExpression<TABLE, SHAPE, MISSING_KEYS, MISSING_KEYS_IN_SHAPE>; setIfValueWhen(when: boolean, columns: OptionalInsertSets<TABLE, SHAPE>): ShapedMissingKeysInsertExpression<TABLE, SHAPE, MISSING_KEYS, MISSING_KEYS_IN_SHAPE>; setIfSetWhen(when: boolean, columns: InsertSets<TABLE, SHAPE>): ShapedMissingKeysInsertExpression<TABLE, SHAPE, MISSING_KEYS, MISSING_KEYS_IN_SHAPE>; setIfSetIfValueWhen(when: boolean, columns: OptionalInsertSets<TABLE, SHAPE>): ShapedMissingKeysInsertExpression<TABLE, SHAPE, MISSING_KEYS, MISSING_KEYS_IN_SHAPE>; setIfNotSetWhen(when: boolean, columns: InsertSets<TABLE, SHAPE>): ShapedMissingKeysInsertExpression<TABLE, SHAPE, MISSING_KEYS, MISSING_KEYS_IN_SHAPE>; setIfNotSetIfValueWhen(when: boolean, columns: OptionalInsertSets<TABLE, SHAPE>): ShapedMissingKeysInsertExpression<TABLE, SHAPE, MISSING_KEYS, MISSING_KEYS_IN_SHAPE>; ignoreIfSetWhen<COLUMNS extends ColumnsForSetOfWithShape<TABLE, SHAPE>>(when: boolean, ...columns: COLUMNS[]): ShapedMissingKeysInsertExpression<TABLE, SHAPE, (COLUMNS & RequiredColumnsForSetOfWithShape<TABLE, SHAPE>) | MISSING_KEYS, MISSING_KEYS_IN_SHAPE>; keepOnlyWhen<COLUMNS extends ColumnsForSetOfWithShape<TABLE, SHAPE>>(when: boolean, ...columns: COLUMNS[]): ShapedMissingKeysInsertExpression<TABLE, SHAPE, Exclude<RequiredColumnsForSetOfWithShape<TABLE, SHAPE> | MISSING_KEYS, COLUMNS>, MISSING_KEYS_IN_SHAPE>; setIfHasValueWhen(when: boolean, columns: InsertSets<TABLE, SHAPE>): ShapedMissingKeysInsertExpression<TABLE, SHAPE, MISSING_KEYS, MISSING_KEYS_IN_SHAPE>; setIfHasValueIfValueWhen(when: boolean, columns: OptionalInsertSets<TABLE, SHAPE>): ShapedMissingKeysInsertExpression<TABLE, SHAPE, MISSING_KEYS, MISSING_KEYS_IN_SHAPE>; setIfHasNoValueWhen(when: boolean, columns: InsertSets<TABLE, SHAPE>): ShapedMissingKeysInsertExpression<TABLE, SHAPE, MISSING_KEYS, MISSING_KEYS_IN_SHAPE>; setIfHasNoValueIfValueWhen(when: boolean, columns: OptionalInsertSets<TABLE, SHAPE>): ShapedMissingKeysInsertExpression<TABLE, SHAPE, MISSING_KEYS, MISSING_KEYS_IN_SHAPE>; ignoreIfHasValueWhen(when: boolean, ...columns: OptionalColumnsForSetOfWithShape<TABLE, SHAPE>[]): ShapedMissingKeysInsertExpression<TABLE, SHAPE, MISSING_KEYS, MISSING_KEYS_IN_SHAPE>; ignoreIfHasNoValueWhen(when: boolean, ...columns: OptionalColumnsForSetOfWithShape<TABLE, SHAPE>[]): ShapedMissingKeysInsertExpression<TABLE, SHAPE, MISSING_KEYS, MISSING_KEYS_IN_SHAPE>; ignoreAnySetWithNoValueWhen(when: boolean): ShapedMissingKeysInsertExpression<TABLE, SHAPE, MISSING_KEYS, MISSING_KEYS_IN_SHAPE>; disallowIfSetWhen(when: boolean, errorMessage: string, ...columns: ColumnsForSetOfWithShape<TABLE, SHAPE>[]): ShapedMissingKeysInsertExpression<TABLE, SHAPE, MISSING_KEYS, MISSING_KEYS_IN_SHAPE>; disallowIfSetWhen(when: boolean, error: Error, ...columns: ColumnsForSetOfWithShape<TABLE, SHAPE>[]): ShapedMissingKeysInsertExpression<TABLE, SHAPE, MISSING_KEYS, MISSING_KEYS_IN_SHAPE>; disallowIfNotSetWhen(when: boolean, errorMessage: string, ...columns: ColumnsForSetOfWithShape<TABLE, SHAPE>[]): ShapedMissingKeysInsertExpression<TABLE, SHAPE, MISSING_KEYS, MISSING_KEYS_IN_SHAPE>; disallowIfNotSetWhen(when: boolean, error: Error, ...columns: ColumnsForSetOfWithShape<TABLE, SHAPE>[]): ShapedMissingKeysInsertExpression<TABLE, SHAPE, MISSING_KEYS, MISSING_KEYS_IN_SHAPE>; disallowIfValueWhen(when: boolean, errorMessage: string, ...columns: ColumnsForSetOfWithShape<TABLE, SHAPE>[]): ShapedMissingKeysInsertExpression<TABLE, SHAPE, MISSING_KEYS, MISSING_KEYS_IN_SHAPE>; disallowIfValueWhen(when: boolean, error: Error, ...columns: ColumnsForSetOfWithShape<TABLE, SHAPE>[]): ShapedMissingKeysInsertExpression<TABLE, SHAPE, MISSING_KEYS, MISSING_KEYS_IN_SHAPE>; disallowIfNoValueWhen(when: boolean, errorMessage: string, ...columns: ColumnsForSetOfWithShape<TABLE, SHAPE>[]): ShapedMissingKeysInsertExpression<TABLE, SHAPE, MISSING_KEYS, MISSING_KEYS_IN_SHAPE>; disallowIfNoValueWhen(when: boolean, error: Error, ...columns: ColumnsForSetOfWithShape<TABLE, SHAPE>[]): ShapedMissingKeysInsertExpression<TABLE, SHAPE, MISSING_KEYS, MISSING_KEYS_IN_SHAPE>; disallowAnyOtherSetWhen(when: boolean, errorMessage: string, ...columns: ColumnsForSetOfWithShape<TABLE, SHAPE>[]): ShapedMissingKeysInsertExpression<TABLE, SHAPE, MISSING_KEYS, MISSING_KEYS_IN_SHAPE>; disallowAnyOtherSetWhen(when: boolean, error: Error, ...columns: ColumnsForSetOfWithShape<TABLE, SHAPE>[]): ShapedMissingKeysInsertExpression<TABLE, SHAPE, MISSING_KEYS, MISSING_KEYS_IN_SHAPE>; } export interface ExecutableMultipleInsertExpression<TABLE extends ITableOrView<any>> extends CustomizableExecutableMultipleInsert<TABLE, undefined> { setForAll(columns: InsertSets<TABLE, undefined>): ExecutableMultipleInsertExpression<TABLE>; setForAllIfValue(columns: OptionalInsertSets<TABLE, undefined>): ExecutableMultipleInsertExpression<TABLE>; setForAllIfSet(columns: InsertSets<TABLE, undefined>): ExecutableMultipleInsertExpression<TABLE>; setForAllIfSetIfValue(columns: OptionalInsertSets<TABLE, undefined>): ExecutableMultipleInsertExpression<TABLE>; setForAllIfNotSet(columns: InsertSets<TABLE, undefined>): ExecutableMultipleInsertExpression<TABLE>; setForAllIfNotSetIfValue(columns: OptionalInsertSets<TABLE, undefined>): ExecutableMultipleInsertExpression<TABLE>; ignoreIfSet<COLUMNS extends ColumnsForSetOf<TABLE>>(...columns: COLUMNS[]): MaybeExecutableMultipleInsertExpression<TABLE, COLUMNS & RequiredColumnsForSetOf<TABLE>>; keepOnly<COLUMNS extends ColumnsForSetOf<TABLE>>(...columns: COLUMNS[]): MaybeExecutableMultipleInsertExpression<TABLE, Exclude<RequiredColumnsForSetOf<TABLE>, COLUMNS>>; setForAllIfHasValue(columns: InsertSets<TABLE, undefined>): ExecutableMultipleInsertExpression<TABLE>; setForAllIfHasValueIfValue(columns: OptionalInsertSets<TABLE, undefined>): ExecutableMultipleInsertExpression<TABLE>; setForAllIfHasNoValue(columns: InsertSets<TABLE, undefined>): ExecutableMultipleInsertExpression<TABLE>; setForAllIfHasNoValueIfValue(columns: OptionalInsertSets<TABLE, undefined>): ExecutableMultipleInsertExpression<TABLE>; ignoreIfHasValue(...columns: OptionalColumnsForSetOf<TABLE>[]): ExecutableMultipleInsertExpression<TABLE>; ignoreIfHasNoValue(...columns: OptionalColumnsForSetOf<TABLE>[]): ExecutableMultipleInsertExpression<TABLE>; ignoreAnySetWithNoValue(): ExecutableMultipleInsertExpression<TABLE>; disallowIfSet(errorMessage: string, ...columns: ColumnsForSetOf<TABLE>[]): ExecutableMultipleInsertExpression<TABLE>; disallowIfSet(error: Error, ...columns: ColumnsForSetOf<TABLE>[]): ExecutableMultipleInsertExpression<TABLE>; disallowIfNotSet(errorMessage: string, ...columns: ColumnsForSetOf<TABLE>[]): ExecutableMultipleInsertExpression<TABLE>; disallowIfNotSet(error: Error, ...columns: ColumnsForSetOf<TABLE>[]): ExecutableMultipleInsertExpression<TABLE>; disallowIfValue(errorMessage: string, ...columns: ColumnsForSetOf<TABLE>[]): ExecutableMultipleInsertExpression<TABLE>; disallowIfValue(error: Error, ...columns: ColumnsForSetOf<TABLE>[]): ExecutableMultipleInsertExpression<TABLE>; disallowIfNoValue(errorMessage: string, ...columns: ColumnsForSetOf<TABLE>[]): ExecutableMultipleInsertExpression<TABLE>; disallowIfNoValue(error: Error, ...columns: ColumnsForSetOf<TABLE>[]): ExecutableMultipleInsertExpression<TABLE>; disallowAnyOtherSet(errorMessage: string, ...columns: ColumnsForSetOf<TABLE>[]): ExecutableMultipleInsertExpression<TABLE>; disallowAnyOtherSet(error: Error, ...columns: ColumnsForSetOf<TABLE>[]): ExecutableMultipleInsertExpression<TABLE>; setForAllWhen(when: boolean, columns: InsertSets<TABLE, undefined>): ExecutableMultipleInsertExpression<TABLE>; setForAllIfValueWhen(when: boolean, columns: OptionalInsertSets<TABLE, undefined>): ExecutableMultipleInsertExpression<TABLE>; setForAllIfSetWhen(when: boolean, columns: InsertSets<TABLE, undefined>): ExecutableMultipleInsertExpression<TABLE>; setForAllIfSetIfValueWhen(when: boolean, columns: OptionalInsertSets<TABLE, undefined>): ExecutableMultipleInsertExpression<TABLE>; setForAllIfNotSetWhen(when: boolean, columns: InsertSets<TABLE, undefined>): ExecutableMultipleInsertExpression<TABLE>; setForAllIfNotSetIfValueWhen(when: boolean, columns: OptionalInsertSets<TABLE, undefined>): ExecutableMultipleInsertExpression<TABLE>; ignoreIfSetWhen<COLUMNS extends ColumnsForSetOf<TABLE>>(when: boolean, ...columns: COLUMNS[]): MaybeExecutableMultipleInsertExpression<TABLE, COLUMNS & RequiredColumnsForSetOf<TABLE>>; keepOnlyWhen<COLUMNS extends ColumnsForSetOf<TABLE>>(when: boolean, ...columns: COLUMNS[]): MaybeExecutableMultipleInsertExpression<TABLE, Exclude<RequiredColumnsForSetOf<TABLE>, COLUMNS>>; setForAllIfHasValueWhen(when: boolean, columns: InsertSets<TABLE, undefined>): ExecutableMultipleInsertExpression<TABLE>; setForAllIfHasValueIfValueWhen(when: boolean, columns: OptionalInsertSets<TABLE, undefined>): ExecutableMultipleInsertExpression<TABLE>; setForAllIfHasNoValueWhen(when: boolean, columns: InsertSets<TABLE, undefined>): ExecutableMultipleInsertExpression<TABLE>; setForAllIfHasNoValueIfValueWhen(when: boolean, columns: OptionalInsertSets<TABLE, undefined>): ExecutableMultipleInsertExpression<TABLE>; ignoreIfHasValueWhen(when: boolean, ...columns: OptionalColumnsForSetOf<TABLE>[]): ExecutableMultipleInsertExpression<TABLE>; ignoreIfHasNoValueWhen(when: boolean, ...columns: OptionalColumnsForSetOf<TABLE>[]): ExecutableMultipleInsertExpression<TABLE>; ignoreAnySetWithNoValueWhen(when: boolean): ExecutableMultipleInsertExpression<TABLE>; disallowIfSetWhen(when: boolean, errorMessage: string, ...columns: ColumnsForSetOf<TABLE>[]): ExecutableMultipleInsertExpression<TABLE>; disallowIfSetWhen(when: boolean, error: Error, ...columns: ColumnsForSetOf<TABLE>[]): ExecutableMultipleInsertExpression<TABLE>; disallowIfNotSetWhen(when: boolean, errorMessage: string, ...columns: ColumnsForSetOf<TABLE>[]): ExecutableMultipleInsertExpression<TABLE>; disallowIfNotSetWhen(when: boolean, error: Error, ...columns: ColumnsForSetOf<TABLE>[]): ExecutableMultipleInsertExpression<TABLE>; disallowIfValueWhen(when: boolean, errorMessage: string, ...columns: ColumnsForSetOf<TABLE>[]): ExecutableMultipleInsertExpression<TABLE>; disallowIfValueWhen(when: boolean, error: Error, ...columns: ColumnsForSetOf<TABLE>[]): ExecutableMultipleInsertExpression<TABLE>; disallowIfNoValueWhen(when: boolean, errorMessage: string, ...columns: ColumnsForSetOf<TABLE>[]): ExecutableMultipleInsertExpression<TABLE>; disallowIfNoValueWhen(when: boolean, error: Error, ...columns: ColumnsForSetOf<TABLE>[]): ExecutableMultipleInsertExpression<TABLE>; disallowAnyOtherSetWhen(when: boolean, errorMessage: string, ...columns: ColumnsForSetOf<TABLE>[]): ExecutableMultipleInsertExpression<TABLE>; disallowAnyOtherSetWhen(when: boolean, error: Error, ...columns: ColumnsForSetOf<TABLE>[]): ExecutableMultipleInsertExpression<TABLE>; } export interface ShapedExecutableMultipleInsertExpression<TABLE extends ITableOrView<any>, SHAPE> extends CustomizableExecutableMultipleInsert<TABLE, SHAPE> { extendShape<EXTEND_SHAPE extends InsertShape<TABLE>>(shape: EXTEND_SHAPE): MaybeShapedExecutableMultipleInsertExpression<TABLE, SHAPE & ResolveShape<TABLE, EXTEND_SHAPE>, keyof EXTEND_SHAPE, never>; setForAll(columns: InsertSets<TABLE, SHAPE>): ShapedExecutableMultipleInsertExpression<TABLE, SHAPE>; setForAllIfValue(columns: OptionalInsertSets<TABLE, SHAPE>): ShapedExecutableMultipleInsertExpression<TABLE, SHAPE>; setForAllIfSet(columns: InsertSets<TABLE, SHAPE>): ShapedExecutableMultipleInsertExpression<TABLE, SHAPE>; setForAllIfSetIfValue(columns: OptionalInsertSets<TABLE, SHAPE>): ShapedExecutableMultipleInsertExpression<TABLE, SHAPE>; setForAllIfNotSet(columns: InsertSets<TABLE, SHAPE>): ShapedExecutableMultipleInsertExpression<TABLE, SHAPE>; setForAllIfNotSetIfValue(columns: OptionalInsertSets<TABLE, SHAPE>): ShapedExecutableMultipleInsertExpression<TABLE, SHAPE>; ignoreIfSet<COLUMNS extends ColumnsForSetOfWithShape<TABLE, SHAPE>>(...columns: COLUMNS[]): MaybeShapedExecutableMultipleInsertExpression<TABLE, SHAPE, COLUMNS & RequiredColumnsForSetOfWithShape<TABLE, SHAPE>, never>; keepOnly<COLUMNS extends ColumnsForSetOfWithShape<TABLE, SHAPE>>(...columns: COLUMNS[]): MaybeShapedExecutableMultipleInsertExpression<TABLE, SHAPE, Exclude<RequiredColumnsForSetOfWithShape<TABLE, SHAPE>, COLUMNS>, never>; setForAllIfHasValue(columns: InsertSets<TABLE, SHAPE>): ShapedExecutableMultipleInsertExpr