@ff00ff/mammoth
Advanced tools
Comparing version 1.2.0 to 1.3.0
@@ -11,2 +11,3 @@ import { Expression } from './expression'; | ||
referencesTable?: string; | ||
referencesSelf?: boolean; | ||
referencesColumn?: string; | ||
@@ -22,2 +23,3 @@ enumValues?: string[]; | ||
references<T extends TableDefinition<any>, ColumnName extends T extends TableDefinition<infer Columns> ? keyof Columns : never>(table: T, columnName: ColumnName): ColumnDefinition<DataType, IsNotNull, HasDefault>; | ||
referencesSelf(columnName: string): ColumnDefinition<DataType, IsNotNull, HasDefault>; | ||
} | ||
@@ -24,0 +26,0 @@ export declare const makeColumnDefinition: <DataType, IsNotNull extends boolean = false, HasDefault extends boolean = false>(dataType: string, enumValues?: string[] | undefined) => ColumnDefinition<DataType, IsNotNull, HasDefault>; |
@@ -14,2 +14,3 @@ "use strict"; | ||
let referencesTable = undefined; | ||
let referencesSelf = false; | ||
let referencesColumn = undefined; | ||
@@ -26,2 +27,3 @@ return { | ||
referencesTable, | ||
referencesSelf, | ||
referencesColumn, | ||
@@ -56,2 +58,7 @@ enumValues, | ||
}, | ||
referencesSelf(columnName) { | ||
referencesSelf = true; | ||
referencesColumn = columnName; | ||
return this; | ||
}, | ||
}; | ||
@@ -83,3 +90,3 @@ }; | ||
getSnakeCaseName() { | ||
return naming_1.toSnakeCase(this.columnName); | ||
return naming_1.wrapQuotes(naming_1.toSnakeCase(this.columnName)); | ||
} | ||
@@ -86,0 +93,0 @@ /** @internal */ |
/// <reference types="node" /> | ||
import { ColumnDefinition } from './column'; | ||
export declare type Int4 = number; | ||
export declare type Int8 = string; | ||
export declare type Float4 = number; | ||
export declare type Float8 = number; | ||
export declare type Numeric = string; | ||
export declare type AnyNumber = Int4 | Int8 | Float4 | Float8 | Numeric; | ||
export declare function dataType<T>(dataType: string): ColumnDefinition<T, false, false>; | ||
export declare function int8(): ColumnDefinition<string>; | ||
export declare function int8(): ColumnDefinition<Int8>; | ||
export declare function int8<T>(): ColumnDefinition<T>; | ||
export declare function bigint(): ColumnDefinition<string>; | ||
export declare function bigint(): ColumnDefinition<Int8>; | ||
export declare function bigint<T>(): ColumnDefinition<T>; | ||
export declare function bigserial(): ColumnDefinition<string, false, true>; | ||
export declare function bigserial(): ColumnDefinition<Int8, false, true>; | ||
export declare function bigserial<T>(): ColumnDefinition<T, false, true>; | ||
export declare function serial8(): ColumnDefinition<string, false, true>; | ||
export declare function serial8(): ColumnDefinition<Int8, false, true>; | ||
export declare function serial8<T>(): ColumnDefinition<T, false, true>; | ||
@@ -48,19 +54,19 @@ export declare function bit(n?: number): ColumnDefinition<string>; | ||
export declare function date<T>(): ColumnDefinition<T>; | ||
export declare function doublePrecision(): ColumnDefinition<number>; | ||
export declare function doublePrecision(): ColumnDefinition<Float8>; | ||
export declare function doublePrecision<T>(): ColumnDefinition<T>; | ||
export declare function float8(): ColumnDefinition<number>; | ||
export declare function float8(): ColumnDefinition<Float8>; | ||
export declare function float8<T>(): ColumnDefinition<T>; | ||
export declare function inet(): ColumnDefinition<string>; | ||
export declare function inet<T>(): ColumnDefinition<T>; | ||
export declare function decimal(): ColumnDefinition<string>; | ||
export declare function decimal(p: number): ColumnDefinition<string>; | ||
export declare function decimal(p: number, s: number): ColumnDefinition<string>; | ||
export declare function decimal(): ColumnDefinition<Numeric>; | ||
export declare function decimal(p: number): ColumnDefinition<Numeric>; | ||
export declare function decimal(p: number, s: number): ColumnDefinition<Numeric>; | ||
export declare function decimal<T>(): ColumnDefinition<T>; | ||
export declare function decimal<T>(p: number): ColumnDefinition<T>; | ||
export declare function decimal<T>(p: number, s: number): ColumnDefinition<T>; | ||
export declare function integer(): ColumnDefinition<number>; | ||
export declare function integer(): ColumnDefinition<Int4>; | ||
export declare function integer<T>(): ColumnDefinition<T>; | ||
export declare function int(): ColumnDefinition<number>; | ||
export declare function int(): ColumnDefinition<Int4>; | ||
export declare function int<T>(): ColumnDefinition<T>; | ||
export declare function int4(): ColumnDefinition<number>; | ||
export declare function int4(): ColumnDefinition<Int4>; | ||
export declare function int4<T>(): ColumnDefinition<T>; | ||
@@ -83,5 +89,5 @@ export declare function interval(): ColumnDefinition<unknown>; | ||
export declare function money<T>(): ColumnDefinition<T>; | ||
export declare function numeric(): ColumnDefinition<string>; | ||
export declare function numeric(p: number): ColumnDefinition<string>; | ||
export declare function numeric(p: number, s: number): ColumnDefinition<string>; | ||
export declare function numeric(): ColumnDefinition<Numeric>; | ||
export declare function numeric(p: number): ColumnDefinition<Numeric>; | ||
export declare function numeric(p: number, s: number): ColumnDefinition<Numeric>; | ||
export declare function numeric<T>(): ColumnDefinition<T>; | ||
@@ -101,17 +107,17 @@ export declare function numeric<T>(p: number): ColumnDefinition<T>; | ||
export declare function polygon<T>(): ColumnDefinition<T>; | ||
export declare function real(): ColumnDefinition<number>; | ||
export declare function real(): ColumnDefinition<Float4>; | ||
export declare function real<T>(): ColumnDefinition<T>; | ||
export declare function float4(): ColumnDefinition<number>; | ||
export declare function float4(): ColumnDefinition<Float4>; | ||
export declare function float4<T>(): ColumnDefinition<T>; | ||
export declare function smallint(): ColumnDefinition<number>; | ||
export declare function smallint(): ColumnDefinition<Int4>; | ||
export declare function smallint<T>(): ColumnDefinition<T>; | ||
export declare function int2(): ColumnDefinition<number>; | ||
export declare function int2(): ColumnDefinition<Int4>; | ||
export declare function int2<T>(): ColumnDefinition<T>; | ||
export declare function serial(): ColumnDefinition<number, false, true>; | ||
export declare function serial(): ColumnDefinition<Int4, false, true>; | ||
export declare function serial<T>(): ColumnDefinition<T, false, true>; | ||
export declare function serial4(): ColumnDefinition<number, false, true>; | ||
export declare function serial4(): ColumnDefinition<Int4, false, true>; | ||
export declare function serial4<T>(): ColumnDefinition<T, false, true>; | ||
export declare function smallserial(): ColumnDefinition<number, false, true>; | ||
export declare function smallserial(): ColumnDefinition<Int4, false, true>; | ||
export declare function smallserial<T>(): ColumnDefinition<T, false, true>; | ||
export declare function serial2(): ColumnDefinition<number, false, true>; | ||
export declare function serial2(): ColumnDefinition<Int4, false, true>; | ||
export declare function serial2<T>(): ColumnDefinition<T, false, true>; | ||
@@ -145,1 +151,3 @@ export declare function text(): ColumnDefinition<string>; | ||
export declare function enumType<EnumValue>(name: string, values: readonly EnumValue[]): ColumnDefinition<EnumValue>; | ||
export declare function array<T>(dataType: ColumnDefinition<T>): ColumnDefinition<T[], false, false>; | ||
export declare function array2d<T>(dataType: ColumnDefinition<T>): ColumnDefinition<T[][], false, false>; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.text = exports.serial2 = exports.smallserial = exports.serial4 = exports.serial = exports.int2 = exports.smallint = exports.float4 = exports.real = exports.polygon = exports.pgLsn = exports.path = exports.point = exports.numeric = exports.money = exports.macaddr8 = exports.macaddr = exports.lseg = exports.line = exports.jsonb = exports.json = exports.interval = exports.int4 = exports.int = exports.integer = exports.decimal = exports.inet = exports.float8 = exports.doublePrecision = exports.date = exports.citext = exports.caseInsensitiveText = exports.cidr = exports.circle = exports.varchar = exports.characterVarying = exports.char = exports.character = exports.bytea = exports.box = exports.bool = exports.boolean = exports.varbit = exports.bitVarying = exports.bit = exports.serial8 = exports.bigserial = exports.bigint = exports.int8 = exports.dataType = void 0; | ||
exports.enumType = exports.xml = exports.uuid = exports.txidSnapshot = exports.tsvector = exports.tsquery = exports.timestampWithTimeZone = exports.timestampWithoutTimeZone = exports.timestamptz = exports.timestamp = exports.timeWithTimeZone = exports.timeWithoutTimeZone = exports.time = void 0; | ||
exports.array2d = exports.array = exports.enumType = exports.xml = exports.uuid = exports.txidSnapshot = exports.tsvector = exports.tsquery = exports.timestampWithTimeZone = exports.timestampWithoutTimeZone = exports.timestamptz = exports.timestamp = exports.timeWithTimeZone = exports.timeWithoutTimeZone = exports.time = void 0; | ||
const column_1 = require("./column"); | ||
@@ -261,1 +261,13 @@ const variableLength = (string, ...n) => n.length > 0 ? `${string}(${n.join(`, `)})` : string; | ||
exports.enumType = enumType; | ||
function array(dataType) { | ||
return internalArray(dataType, 1); | ||
} | ||
exports.array = array; | ||
function array2d(dataType) { | ||
return internalArray(dataType, 2); | ||
} | ||
exports.array2d = array2d; | ||
function internalArray(dataType, dimensions) { | ||
const definition = dataType.getDefinition(); | ||
return makeDataType(definition.dataType + '[]'.repeat(dimensions)); | ||
} |
@@ -12,2 +12,3 @@ import * as sqlFunctions from './sql-functions'; | ||
}>(tableDefinitions: TableDefinitions, queryExecutor: QueryExecutorFn) => { | ||
raw<DataType = unknown, IsNotNull extends boolean = true, Name extends string = never>(strings: TemplateStringsArray, ...parameters: any[]): import("./expression").Expression<DataType, IsNotNull, Name>; | ||
star(): sqlFunctions.Star; | ||
@@ -17,14 +18,14 @@ star<T extends unknown>(table: T): T extends Table<any, infer Columns> ? import("./column").ColumnSet<Columns> : never; | ||
stringAgg: (expression: import("./expression").Expression<string, boolean, any>, delimiter: string, ...orderBy: import("./expression").Expression<any, any, any>[]) => import("./expression").Expression<string, false, "stringAgg">; | ||
bitAnd: (expression: import("./expression").Expression<number, boolean, any>) => import("./expression").Expression<number, false, "bitAnd">; | ||
bitOr: (expression: import("./expression").Expression<number, boolean, any>) => import("./expression").Expression<number, false, "bitOr">; | ||
bitAnd: <T_1 extends import("./data-types").AnyNumber>(expression: import("./expression").Expression<T_1, boolean, any>) => import("./expression").Expression<T_1, false, "bitAnd">; | ||
bitOr: <T_2 extends import("./data-types").AnyNumber>(expression: import("./expression").Expression<T_2, boolean, any>) => import("./expression").Expression<T_2, false, "bitOr">; | ||
boolAnd: (expression: import("./expression").Expression<boolean, boolean, any>) => import("./expression").Expression<number, false, "boolAnd">; | ||
boolOr: (expression: import("./expression").Expression<boolean, boolean, any>) => import("./expression").Expression<number, false, "boolOr">; | ||
every: (expression: import("./expression").Expression<boolean, boolean, any>) => import("./expression").Expression<number, false, "every">; | ||
arrayAgg: <DataType>(expression: import("./expression").Expression<DataType, boolean, any>) => import("./expression").Expression<DataType[], false, "arrayAgg">; | ||
arrayAgg: <DataType_1>(expression: import("./expression").Expression<DataType_1, boolean, any>) => import("./expression").Expression<DataType_1[], false, "arrayAgg">; | ||
count: (expression?: import("./expression").Expression<any, any, any> | undefined) => import("./expression").Expression<string, true, "count">; | ||
min: <DataType_1>(expression: import("./expression").Expression<DataType_1, boolean, any>) => import("./expression").Expression<DataType_1, false, "min">; | ||
max: <DataType_2>(expression: import("./expression").Expression<DataType_2, boolean, any>) => import("./expression").Expression<DataType_2, false, "max">; | ||
avg: (expression: import("./expression").Expression<number, boolean, any>) => import("./expression").Expression<number, false, "avg">; | ||
sum: (expression: import("./expression").Expression<number, boolean, any>) => import("./expression").Expression<number, false, "sum">; | ||
xmlagg: <DataType_3>(expression: import("./expression").Expression<DataType_3, boolean, any>) => import("./expression").Expression<number, false, "xmlagg">; | ||
min: <DataType_2>(expression: import("./expression").Expression<DataType_2, boolean, any>) => import("./expression").Expression<DataType_2, false, "min">; | ||
max: <DataType_3>(expression: import("./expression").Expression<DataType_3, boolean, any>) => import("./expression").Expression<DataType_3, false, "max">; | ||
avg: <T_3 extends import("./data-types").AnyNumber>(expression: import("./expression").Expression<T_3, boolean, any>) => import("./expression").Expression<T_3, false, "avg">; | ||
sum: <T_4 extends import("./data-types").AnyNumber>(expression: import("./expression").Expression<T_4, boolean, any>) => import("./expression").Expression<T_4, false, "sum">; | ||
xmlagg: <DataType_4>(expression: import("./expression").Expression<DataType_4, boolean, any>) => import("./expression").Expression<number, false, "xmlagg">; | ||
not: (expression: import("./expression").Expression<boolean, boolean, string>) => import("./expression").DefaultExpression<boolean, true>; | ||
@@ -34,3 +35,3 @@ and: (expression: import("./expression").Expression<boolean, boolean, string>) => import("./expression").DefaultExpression<boolean, true>; | ||
group: (expression: import("./expression").Expression<boolean, boolean, string>) => import("./expression").DefaultExpression<boolean, true>; | ||
any: <T_1>(array: T_1[]) => import("./expression").Expression<T_1, true, "?column?">; | ||
any: <T_5>(array: T_5[]) => import("./expression").Expression<T_5, true, "?column?">; | ||
now: () => import("./expression").Expression<Date, true, "now">; | ||
@@ -41,3 +42,3 @@ exists: (expression: import("./query").Query<any> | import("./expression").Expression<any, any, any>) => import("./expression").DefaultExpression<boolean, true>; | ||
notExists: (expression: import("./query").Query<any> | import("./expression").Expression<any, any, any>) => import("./expression").DefaultExpression<boolean, true>; | ||
coalesce: <DataType_4>(...expressions: (DataType_4 | import("./expression").Expression<DataType_4, boolean, any>)[]) => import("./expression").Expression<DataType_4, true, "coalesce">; | ||
coalesce: <DataType_5>(...expressions: (DataType_5 | import("./expression").Expression<DataType_5, boolean, any>)[]) => import("./expression").Expression<DataType_5, true, "coalesce">; | ||
/** @internal */ | ||
@@ -52,10 +53,10 @@ getTableDefinitions(): { | ||
select: SelectFn; | ||
insertInto: <T_2 extends unknown>(table: T_2, columnNames?: (T_2 extends Table<any, infer Columns_1> ? (keyof Columns_1)[] : never) | undefined) => T_2 extends TableDefinition<any> ? never : InsertIntoResult<T_2, T_2 extends Table<any, infer Columns_2> ? { [K_1 in keyof Pick<{ [K in keyof Columns_2]: Columns_2[K] extends Column<any, any, any, infer IsNotNull, infer HasDefault, any> ? HasDefault extends true ? false : IsNotNull : never; }, { [Key in keyof { [K in keyof Columns_2]: Columns_2[K] extends Column<any, any, any, infer IsNotNull, infer HasDefault, any> ? HasDefault extends true ? false : IsNotNull : never; }]-?: { [K in keyof Columns_2]: Columns_2[K] extends Column<any, any, any, infer IsNotNull, infer HasDefault, any> ? HasDefault extends true ? false : IsNotNull : never; }[Key] extends true ? Key : never; }[keyof Columns_2]>]: Columns_2[K_1] extends Column<any, any, infer DataType_5, any, any, any> ? DataType_5 : never; } & { [K_3 in keyof Pick<{ [K_2 in keyof Columns_2]: Columns_2[K_2] extends Column<any, any, any, boolean, infer HasDefault_1, any> ? HasDefault_1 extends true ? false : false : never; }, { [Key_1 in keyof { [K_2 in keyof Columns_2]: Columns_2[K_2] extends Column<any, any, any, boolean, infer HasDefault_1, any> ? HasDefault_1 extends true ? false : false : never; }]-?: { [K_2 in keyof Columns_2]: Columns_2[K_2] extends Column<any, any, any, boolean, infer HasDefault_1, any> ? HasDefault_1 extends true ? false : false : never; }[Key_1] extends false ? Key_1 : never; }[keyof Columns_2]>]?: (Columns_2[K_3] extends Column<any, any, infer DataType_6, any, any, any> ? DataType_6 | undefined : never) | undefined; } : never>; | ||
deleteFrom: <T_3 extends unknown>(table: T_3) => T_3 extends TableDefinition<any> ? never : import("./delete").DeleteQuery<T_3, number, T_3 extends Table<any, infer Columns_3> ? Columns_3 : never>; | ||
update: <T_4 extends unknown>(table: T_4) => { | ||
set(values: T_4 extends Table<any, infer Columns_4> ? { [K_4 in keyof Columns_4]?: (Columns_4[K_4] extends Column<any, any, infer DataType_7, infer IsNotNull_1, any, any> ? IsNotNull_1 extends true ? DataType_7 | import("./expression").Expression<DataType_7, boolean, any> : DataType_7 | import("./expression").Expression<DataType_7 | undefined, boolean, any> | undefined : never) | undefined; } : never): import("./update").UpdateQuery<T_4, number, T_4 extends Table<any, infer Columns_5> ? Columns_5 : never>; | ||
insertInto: <T_6 extends unknown>(table: T_6, columnNames?: (T_6 extends Table<any, infer Columns_1> ? (keyof Columns_1)[] : never) | undefined) => T_6 extends TableDefinition<any> ? never : InsertIntoResult<T_6, T_6 extends Table<any, infer Columns_2> ? { [K_1 in keyof import("./types").PickByValue<{ [K in keyof Columns_2]: Columns_2[K] extends Column<any, any, any, infer IsNotNull_1, infer HasDefault, any> ? HasDefault extends true ? false : IsNotNull_1 : never; }, true>]: Columns_2[K_1] extends Column<any, any, infer DataType_6, any, any, any> ? DataType_6 : never; } & { [K_3 in keyof import("./types").PickByValue<{ [K_2 in keyof Columns_2]: Columns_2[K_2] extends Column<any, any, any, boolean, infer HasDefault_1, any> ? HasDefault_1 extends true ? false : false : never; }, false>]?: (Columns_2[K_3] extends Column<any, any, infer DataType_7, any, any, any> ? DataType_7 | undefined : never) | undefined; } : never>; | ||
deleteFrom: <T_7 extends unknown>(table: T_7) => T_7 extends TableDefinition<any> ? never : import("./delete").DeleteQuery<T_7, number, T_7 extends Table<any, infer Columns_3> ? Columns_3 : never>; | ||
update: <T_8 extends unknown>(table: T_8) => { | ||
set(values: T_8 extends Table<any, infer Columns_4> ? { [K_4 in keyof Columns_4]?: (Columns_4[K_4] extends Column<any, any, infer DataType_8, infer IsNotNull_2, any, any> ? IsNotNull_2 extends true ? DataType_8 | import("./expression").Expression<DataType_8, boolean, any> : DataType_8 | import("./expression").Expression<DataType_8 | undefined, boolean, any> | undefined : never) | undefined; } : never): import("./update").UpdateQuery<T_8, number, T_8 extends Table<any, infer Columns_5> ? Columns_5 : never>; | ||
}; | ||
with: import("./with").WithFn; | ||
truncate: <T_5 extends unknown>(table: T_5) => T_5 extends TableDefinition<any> ? never : import("./truncate").TruncateQuery<T_5, number, T_5 extends Table<any, infer Columns_6> ? Columns_6 : never>; | ||
truncate: <T_9 extends unknown>(table: T_9) => T_9 extends TableDefinition<any> ? never : import("./truncate").TruncateQuery<T_9, number, T_9 extends Table<any, infer Columns_6> ? Columns_6 : never>; | ||
case: () => CaseStatement<never>; | ||
} & { [TableName in keyof TableDefinitions]: TableDefinitions[TableName] extends TableDefinition<infer ColumnDefinitions> ? Table<TableName, { [K_5 in keyof ColumnDefinitions]: K_5 extends string ? Column<K_5, TableName, ColumnDefinitions[K_5] extends ColumnDefinition<infer DataType_8, any, any> ? DataType_8 : never, ColumnDefinitions[K_5] extends ColumnDefinition<any, infer IsNotNull_2, any> ? IsNotNull_2 : never, ColumnDefinitions[K_5] extends ColumnDefinition<any, any, infer HasDefault_2> ? HasDefault_2 : never, undefined> : never; }> : never; }; | ||
} & { [TableName in keyof TableDefinitions]: TableDefinitions[TableName] extends TableDefinition<infer ColumnDefinitions> ? Table<TableName, { [K_5 in keyof ColumnDefinitions]: K_5 extends string ? Column<K_5, TableName, ColumnDefinitions[K_5] extends ColumnDefinition<infer DataType_9, any, any> ? DataType_9 : never, ColumnDefinitions[K_5] extends ColumnDefinition<any, infer IsNotNull_3, any> ? IsNotNull_3 : never, ColumnDefinitions[K_5] extends ColumnDefinition<any, any, infer HasDefault_2> ? HasDefault_2 : never, undefined> : never; }> : never; }; |
@@ -17,3 +17,3 @@ import { Token } from './tokens'; | ||
constructor(queryExecutor: QueryExecutorFn, returningKeys: string[], table: T, resultType: ResultType, tokens: Token[]); | ||
then(onFulfilled?: ((value: Returning extends number ? number : ResultSet<DeleteQuery<T, Returning>, false>[]) => any | PromiseLike<any>) | undefined | null, onRejected?: ((reason: any) => void | PromiseLike<void>) | undefined | null): Promise<any>; | ||
then<Result1, Result2 = never>(onFulfilled?: ((value: Returning extends number ? number : ResultSet<DeleteQuery<T, Returning>, false>[]) => Result1 | PromiseLike<Result1>) | undefined | null, onRejected?: ((reason: any) => Result2 | PromiseLike<Result2>) | undefined | null): Promise<Result1 | Result2>; | ||
using(...fromItems: Table<any, any>[]): DeleteQuery<T, Returning>; | ||
@@ -20,0 +20,0 @@ where(condition: Expression<boolean, boolean, string>): DeleteQuery<T, Returning>; |
@@ -20,3 +20,3 @@ import { Token } from './tokens'; | ||
constructor(queryExecutor: QueryExecutorFn, returningKeys: string[], table: T, resultType: ResultType, tokens: Token[]); | ||
then(onFulfilled?: ((value: Returning extends number ? Returning : ResultSet<InsertQuery<T, Returning>, false>[]) => any | PromiseLike<any>) | undefined | null, onRejected?: ((reason: any) => void | PromiseLike<void>) | undefined | null): Promise<any>; | ||
then<Result1, Result2 = never>(onFulfilled?: ((value: Returning extends number ? Returning : ResultSet<InsertQuery<T, Returning>, false>[]) => Result1 | PromiseLike<Result1>) | undefined | null, onRejected?: ((reason: any) => Result2 | PromiseLike<Result2>) | undefined | null): Promise<Result1 | Result2>; | ||
returning<C1 extends keyof TableColumns>(column1: C1): InsertQuery<T, GetReturning<TableColumns, C1>>; | ||
@@ -37,2 +37,3 @@ returning<C1 extends keyof TableColumns, C2 extends keyof TableColumns>(column1: C1, column2: C2): InsertQuery<T, GetReturning<TableColumns, C1> & GetReturning<TableColumns, C2>>; | ||
}; | ||
private getConflictTargetToken; | ||
onConflict<ColumnNames extends T extends Table<any, infer Columns> ? (keyof Columns)[] : never>(...columnNames: ColumnNames): { | ||
@@ -62,2 +63,2 @@ doNothing(): InsertQuery<T, number, T extends Table<any, infer Columns> ? Columns : never>; | ||
} | ||
export declare const makeInsertInto: (queryExecutor: QueryExecutorFn) => <T extends unknown>(table: T, columnNames?: (T extends Table<any, infer Columns> ? (keyof Columns)[] : never) | undefined) => T extends TableDefinition<any> ? never : InsertIntoResult<T, T extends Table<any, infer Columns_1> ? { [K_1 in keyof Pick<{ [K in keyof Columns_1]: Columns_1[K] extends Column<any, any, any, infer IsNotNull, infer HasDefault, any> ? HasDefault extends true ? false : IsNotNull : never; }, { [Key in keyof { [K in keyof Columns_1]: Columns_1[K] extends Column<any, any, any, infer IsNotNull, infer HasDefault, any> ? HasDefault extends true ? false : IsNotNull : never; }]-?: { [K in keyof Columns_1]: Columns_1[K] extends Column<any, any, any, infer IsNotNull, infer HasDefault, any> ? HasDefault extends true ? false : IsNotNull : never; }[Key] extends true ? Key : never; }[keyof Columns_1]>]: Columns_1[K_1] extends Column<any, any, infer DataType, any, any, any> ? DataType : never; } & { [K_3 in keyof Pick<{ [K_2 in keyof Columns_1]: Columns_1[K_2] extends Column<any, any, any, boolean, infer HasDefault_1, any> ? HasDefault_1 extends true ? false : false : never; }, { [Key_1 in keyof { [K_2 in keyof Columns_1]: Columns_1[K_2] extends Column<any, any, any, boolean, infer HasDefault_1, any> ? HasDefault_1 extends true ? false : false : never; }]-?: { [K_2 in keyof Columns_1]: Columns_1[K_2] extends Column<any, any, any, boolean, infer HasDefault_1, any> ? HasDefault_1 extends true ? false : false : never; }[Key_1] extends false ? Key_1 : never; }[keyof Columns_1]>]?: (Columns_1[K_3] extends Column<any, any, infer DataType_1, any, any, any> ? DataType_1 | undefined : never) | undefined; } : never>; | ||
export declare const makeInsertInto: (queryExecutor: QueryExecutorFn) => <T extends unknown>(table: T, columnNames?: (T extends Table<any, infer Columns> ? (keyof Columns)[] : never) | undefined) => T extends TableDefinition<any> ? never : InsertIntoResult<T, T extends Table<any, infer Columns_1> ? { [K_1 in keyof PickByValue<{ [K in keyof Columns_1]: Columns_1[K] extends Column<any, any, any, infer IsNotNull, infer HasDefault, any> ? HasDefault extends true ? false : IsNotNull : never; }, true>]: Columns_1[K_1] extends Column<any, any, infer DataType, any, any, any> ? DataType : never; } & { [K_3 in keyof PickByValue<{ [K_2 in keyof Columns_1]: Columns_1[K_2] extends Column<any, any, any, boolean, infer HasDefault_1, any> ? HasDefault_1 extends true ? false : false : never; }, false>]?: (Columns_1[K_3] extends Column<any, any, infer DataType_1, any, any, any> ? DataType_1 | undefined : never) | undefined; } : never>; |
@@ -97,2 +97,10 @@ "use strict"; | ||
} | ||
getConflictTargetToken(columnNames) { | ||
if (columnNames.length === 0) | ||
return new tokens_1.EmptyToken(); | ||
return new tokens_1.GroupToken([new tokens_1.SeparatorToken(',', columnNames.map((columnName) => { | ||
const column = this.table[columnName]; | ||
return new tokens_1.StringToken(column.getSnakeCaseName()); | ||
}))]); | ||
} | ||
onConflict(...columnNames) { | ||
@@ -105,8 +113,3 @@ const self = this; | ||
new tokens_1.StringToken(`ON CONFLICT`), | ||
columnNames.length > 0 | ||
? new tokens_1.GroupToken(columnNames.map((columnName) => { | ||
const column = self.table[columnName]; | ||
return new tokens_1.StringToken(column.getSnakeCaseName()); | ||
})) | ||
: new tokens_1.EmptyToken(), | ||
self.getConflictTargetToken(columnNames), | ||
new tokens_1.StringToken(`DO NOTHING`), | ||
@@ -119,8 +122,3 @@ ]); | ||
new tokens_1.StringToken(`ON CONFLICT`), | ||
columnNames.length > 0 | ||
? new tokens_1.GroupToken(columnNames.map((columnName) => { | ||
const column = self.table[columnName]; | ||
return new tokens_1.StringToken(column.getSnakeCaseName()); | ||
})) | ||
: new tokens_1.EmptyToken(), | ||
self.getConflictTargetToken(columnNames), | ||
new tokens_1.StringToken(`DO UPDATE SET`), | ||
@@ -127,0 +125,0 @@ new tokens_1.SeparatorToken(`,`, Object.keys(values).map((columnName) => { |
@@ -38,3 +38,3 @@ import { Token } from './tokens'; | ||
constructor(queryExecutor: QueryExecutorFn, returningKeys: string[], includesStar: boolean, tokens: Token[]); | ||
then(onFulfilled?: ((value: ResultSet<SelectQuery<Columns>, false>[]) => any | PromiseLike<any>) | undefined | null, onRejected?: ((reason: any) => void | PromiseLike<void>) | undefined | null): Promise<any>; | ||
then<Result1, Result2 = never>(onFulfilled?: ((value: ResultSet<SelectQuery<Columns>, false>[]) => Result1 | PromiseLike<Result1>) | undefined | null, onRejected?: ((reason: any) => Result2 | PromiseLike<Result2>) | undefined | null): Promise<Result1 | Result2>; | ||
private newSelectQuery; | ||
@@ -41,0 +41,0 @@ from<T extends Table<any, any>>(fromItem: T): T extends TableDefinition<any> ? never : Join<SelectQuery<Columns, IncludesStar>, T>; |
@@ -57,3 +57,3 @@ "use strict"; | ||
leftJoin(table) { | ||
return this.newSelectQuery([...this.tokens, new tokens_1.StringToken(`INNER JOIN`), this.getTableStringToken(table)], table); | ||
return this.newSelectQuery([...this.tokens, new tokens_1.StringToken(`LEFT JOIN`), this.getTableStringToken(table)], table); | ||
} | ||
@@ -60,0 +60,0 @@ rightOuterJoin(table) { |
@@ -0,1 +1,2 @@ | ||
import { AnyNumber, Int8 } from './data-types'; | ||
import { StringToken } from './tokens'; | ||
@@ -11,7 +12,8 @@ import { DefaultExpression, Expression } from './expression'; | ||
} | ||
export declare function raw<DataType = unknown, IsNotNull extends boolean = true, Name extends string = never>(strings: TemplateStringsArray, ...parameters: any[]): Expression<DataType, IsNotNull, Name>; | ||
export declare function star(): Star; | ||
export declare function star<T extends Table<any, any>>(table: T): T extends Table<any, infer Columns> ? ColumnSet<Columns> : never; | ||
export declare const stringAgg: (expression: Expression<string, boolean, any>, delimiter: string, ...orderBy: Expression<any, any, any>[]) => Expression<string, false, 'stringAgg'>; | ||
export declare const bitAnd: (expression: Expression<number, boolean, any>) => Expression<number, false, "bitAnd">; | ||
export declare const bitOr: (expression: Expression<number, boolean, any>) => Expression<number, false, "bitOr">; | ||
export declare const bitAnd: <T extends AnyNumber>(expression: Expression<T, boolean, any>) => Expression<T, false, "bitAnd">; | ||
export declare const bitOr: <T extends AnyNumber>(expression: Expression<T, boolean, any>) => Expression<T, false, "bitOr">; | ||
export declare const boolAnd: (expression: Expression<boolean, boolean, any>) => Expression<number, false, "boolAnd">; | ||
@@ -21,7 +23,7 @@ export declare const boolOr: (expression: Expression<boolean, boolean, any>) => Expression<number, false, "boolOr">; | ||
export declare const arrayAgg: <DataType>(expression: Expression<DataType, boolean, any>) => Expression<DataType[], false, "arrayAgg">; | ||
export declare const count: (expression?: Expression<any, any, any> | undefined) => Expression<string, true, 'count'>; | ||
export declare const count: (expression?: Expression<any, any, any> | undefined) => Expression<Int8, true, 'count'>; | ||
export declare const min: <DataType>(expression: Expression<DataType, boolean, any>) => Expression<DataType, false, "min">; | ||
export declare const max: <DataType>(expression: Expression<DataType, boolean, any>) => Expression<DataType, false, "max">; | ||
export declare const avg: (expression: Expression<number, boolean, any>) => Expression<number, false, "avg">; | ||
export declare const sum: (expression: Expression<number, boolean, any>) => Expression<number, false, "sum">; | ||
export declare const avg: <T extends AnyNumber>(expression: Expression<T, boolean, any>) => Expression<T, false, "avg">; | ||
export declare const sum: <T extends AnyNumber>(expression: Expression<T, boolean, any>) => Expression<T, false, "sum">; | ||
export declare const xmlagg: <DataType>(expression: Expression<DataType, boolean, any>) => Expression<number, false, "xmlagg">; | ||
@@ -28,0 +30,0 @@ export declare const not: (expression: Expression<boolean, boolean, string>) => DefaultExpression<boolean, true>; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.coalesce = exports.notExists = exports.andExists = exports.andNotExists = exports.exists = exports.now = exports.any = exports.group = exports.or = exports.and = exports.not = exports.xmlagg = exports.sum = exports.avg = exports.max = exports.min = exports.count = exports.arrayAgg = exports.every = exports.boolOr = exports.boolAnd = exports.bitOr = exports.bitAnd = exports.stringAgg = exports.star = exports.Star = void 0; | ||
exports.coalesce = exports.notExists = exports.andExists = exports.andNotExists = exports.exists = exports.now = exports.any = exports.group = exports.or = exports.and = exports.not = exports.xmlagg = exports.sum = exports.avg = exports.max = exports.min = exports.count = exports.arrayAgg = exports.every = exports.boolOr = exports.boolAnd = exports.bitOr = exports.bitAnd = exports.stringAgg = exports.star = exports.raw = exports.Star = void 0; | ||
const tokens_1 = require("./tokens"); | ||
@@ -16,2 +16,13 @@ const expression_1 = require("./expression"); | ||
exports.Star = Star; | ||
function raw(strings, ...parameters) { | ||
const tokens = strings.flatMap((string, index) => { | ||
if (index === strings.length - 1) { | ||
return [new tokens_1.StringToken(string)]; | ||
} | ||
const parameter = parameters[index]; | ||
return [new tokens_1.StringToken(string), new tokens_1.ParameterToken(parameter)]; | ||
}); | ||
return new expression_1.Expression(tokens, ''); | ||
} | ||
exports.raw = raw; | ||
function star(table) { | ||
@@ -18,0 +29,0 @@ if (table) { |
@@ -13,3 +13,3 @@ import { QueryExecutorFn, ResultType } from './types'; | ||
constructor(queryExecutor: QueryExecutorFn, table: T, resultType: ResultType, tokens: Token[]); | ||
then(onFulfilled?: ((value: number) => any | PromiseLike<any>) | undefined | null, onRejected?: ((reason: any) => void | PromiseLike<void>) | undefined | null): Promise<any>; | ||
then<Result1, Result2 = never>(onFulfilled?: ((value: number) => Result1 | PromiseLike<Result1>) | undefined | null, onRejected?: ((reason: any) => Result2 | PromiseLike<Result2>) | undefined | null): Promise<Result1 | Result2>; | ||
restartIdentity<T extends Table<any, any>>(): any; | ||
@@ -16,0 +16,0 @@ continueIdentity<T extends Table<any, any>>(): any; |
@@ -8,3 +8,3 @@ export declare type ResultType = 'ROWS' | 'AFFECTED_COUNT'; | ||
}; | ||
export declare class GetDataType<Type, IsNull extends boolean> { | ||
export declare class GetDataType<Type, IsNotNull extends boolean> { | ||
private _; | ||
@@ -11,0 +11,0 @@ } |
@@ -16,3 +16,3 @@ import { Token } from './tokens'; | ||
constructor(queryExecutor: QueryExecutorFn, returningKeys: string[], table: T, resultType: ResultType, tokens: Token[]); | ||
then(onFulfilled?: ((value: Returning extends number ? Returning : ResultSet<UpdateQuery<T, Returning>, false>[]) => any | PromiseLike<any>) | undefined | null, onRejected?: ((reason: any) => void | PromiseLike<void>) | undefined | null): Promise<any>; | ||
then<Result1, Result2 = never>(onFulfilled?: ((value: Returning extends number ? Returning : ResultSet<UpdateQuery<T, Returning>, false>[]) => Result1 | PromiseLike<Result1>) | undefined | null, onRejected?: ((reason: any) => Result2 | PromiseLike<Result2>) | undefined | null): Promise<Result1 | Result2>; | ||
where(condition: Expression<boolean, boolean, string>): UpdateQuery<T, Returning>; | ||
@@ -19,0 +19,0 @@ whereCurrentOf(cursorName: string): UpdateQuery<T, number, T extends Table<any, infer Columns> ? Columns : never>; |
{ | ||
"name": "@ff00ff/mammoth", | ||
"license": "MIT", | ||
"version": "1.2.0", | ||
"version": "1.3.0", | ||
"main": "./.build/index.js", | ||
@@ -21,9 +21,9 @@ "types": "./.build/index.d.ts", | ||
"devDependencies": { | ||
"@types/jest": "^26.0.19", | ||
"@types/node": "^14.14.16", | ||
"@types/jest": "^26.0.23", | ||
"@types/node": "^15.12.4", | ||
"dts-jest": "^23.3.0", | ||
"jest": "^26.6.3", | ||
"prettier": "^2.2.1", | ||
"ts-jest": "^26.4.4", | ||
"typescript": "^4.1.3" | ||
"prettier": "^2.3.1", | ||
"ts-jest": "^26.5.6", | ||
"typescript": "^4.2.4" | ||
}, | ||
@@ -30,0 +30,0 @@ "scripts": { |
339550
3823