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