@ff00ff/mammoth
Advanced tools
Comparing version 2.0.0-beta.1 to 2.0.0-beta.2
@@ -14,7 +14,66 @@ import * as sqlFunctions from './sql-functions'; | ||
export interface DefaultDbConfiguration extends DbConfiguration { | ||
NullType: 'UNDEFINED'; | ||
NullType: 'NULL'; | ||
} | ||
export declare const defineDb: <Config extends DbConfiguration, TableDefinitions extends { | ||
export declare const setup: <Config extends DbConfiguration>() => { | ||
defineDb: <TableDefinitions extends { | ||
[key: string]: TableDefinition<any>; | ||
}>(tableDefinitions: TableDefinitions, queryExecutor: QueryExecutorFn) => { | ||
raw<DataType, IsNotNull extends boolean = false, Name extends string = "?column?">(strings: TemplateStringsArray, ...parameters: any[]): import("./expression").Expression<DataType, IsNotNull, Name>; | ||
star(): sqlFunctions.Star; | ||
star<T extends unknown>(table: T): T extends Table<any, infer Columns> ? import("./column").ColumnSet<Columns> : never; | ||
toSql(query: import("./query").Query<any>): { | ||
text: string; | ||
parameters: any[]; | ||
}; | ||
Star: typeof sqlFunctions.Star; | ||
stringAgg: (expression: import("./expression").Expression<string, boolean, any>, delimiter: string, ...orderBy: import("./expression").Expression<any, any, any>[]) => import("./expression").Expression<string, false, "stringAgg">; | ||
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_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_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>; | ||
and: (expression: import("./expression").Expression<boolean, boolean, string>) => import("./expression").DefaultExpression<boolean, true>; | ||
or: (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_5>(array: T_5[]) => import("./expression").Expression<T_5, true, "?column?">; | ||
now: () => import("./expression").Expression<Date, true, "now">; | ||
exists: (expression: import("./expression").Expression<any, any, any> | import("./query").Query<any>) => import("./expression").DefaultExpression<boolean, true>; | ||
andNotExists: (expression: import("./expression").Expression<any, any, any> | import("./query").Query<any>) => import("./expression").DefaultExpression<boolean, true>; | ||
andExists: (expression: import("./expression").Expression<any, any, any> | import("./query").Query<any>) => import("./expression").DefaultExpression<boolean, true>; | ||
notExists: (expression: import("./expression").Expression<any, any, any> | import("./query").Query<any>) => import("./expression").DefaultExpression<boolean, true>; | ||
coalesce: <DataType_5>(...expressions: (DataType_5 | import("./expression").Expression<DataType_5, boolean, any>)[]) => import("./expression").Expression<DataType_5, true, "coalesce">; | ||
/** @internal */ | ||
getTableDefinitions(): { | ||
name: string; | ||
originalDefinition: any; | ||
columns: (ColumnDefinitionFormat & { | ||
name: string; | ||
})[]; | ||
}[]; | ||
select: SelectFn<Config>; | ||
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<Config, 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, boolean, any, any> ? DataType_6 | import("./expression").Expression<DataType_6, boolean, string> | import("./query").Query<{ | ||
[key: string]: DataType_6 | import("./expression").Expression<DataType_6, boolean, string>; | ||
}> : never; } & { [K_3 in keyof import("./types").PickByValue<{ [K_2 in keyof Columns_2]: Columns_2[K_2] extends Column<any, any, any, infer IsNotNull_2, infer HasDefault_1, any> ? HasDefault_1 extends true ? false : IsNotNull_2 : never; }, false>]?: (Columns_2[K_3] extends Column<any, any, infer DataType_7, boolean, any, any> ? DataType_7 | import("./expression").Expression<DataType_7, boolean, string> | import("./query").Query<{ | ||
[key: string]: DataType_7 | import("./expression").Expression<DataType_7, boolean, string>; | ||
}> | 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_3, any, any> ? IsNotNull_3 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_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_9, any, any> ? DataType_9 : never, ColumnDefinitions[K_5] extends ColumnDefinition<any, infer IsNotNull_4, any> ? IsNotNull_4 : never, ColumnDefinitions[K_5] extends ColumnDefinition<any, any, infer HasDefault_2> ? HasDefault_2 : never, undefined> : never; }> : never; }; | ||
}; | ||
export declare const makeDefineDb: <Config extends DbConfiguration>() => <TableDefinitions extends { | ||
[key: string]: TableDefinition<any>; | ||
}>(tableDefinitions: TableDefinitions, queryExecutor: QueryExecutorFn, config?: Config | undefined) => { | ||
}>(tableDefinitions: TableDefinitions, queryExecutor: QueryExecutorFn) => { | ||
raw<DataType, IsNotNull extends boolean = false, Name extends string = "?column?">(strings: TemplateStringsArray, ...parameters: any[]): import("./expression").Expression<DataType, IsNotNull, Name>; | ||
@@ -74,2 +133,59 @@ star(): sqlFunctions.Star; | ||
} & { [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_4, any> ? IsNotNull_4 : never, ColumnDefinitions[K_5] extends ColumnDefinition<any, any, infer HasDefault_2> ? HasDefault_2 : never, undefined> : never; }> : never; }; | ||
export declare const defineDb: <TableDefinitions extends { | ||
[key: string]: TableDefinition<any>; | ||
}>(tableDefinitions: TableDefinitions, queryExecutor: QueryExecutorFn) => { | ||
raw<DataType, IsNotNull extends boolean = false, Name extends string = "?column?">(strings: TemplateStringsArray, ...parameters: any[]): import("./expression").Expression<DataType, IsNotNull, Name>; | ||
star(): sqlFunctions.Star; | ||
star<T extends unknown>(table: T): T extends Table<any, infer Columns> ? import("./column").ColumnSet<Columns> : never; | ||
toSql(query: import("./query").Query<any>): { | ||
text: string; | ||
parameters: any[]; | ||
}; | ||
Star: typeof sqlFunctions.Star; | ||
stringAgg: (expression: import("./expression").Expression<string, boolean, any>, delimiter: string, ...orderBy: import("./expression").Expression<any, any, any>[]) => import("./expression").Expression<string, false, "stringAgg">; | ||
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_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_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>; | ||
and: (expression: import("./expression").Expression<boolean, boolean, string>) => import("./expression").DefaultExpression<boolean, true>; | ||
or: (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_5>(array: T_5[]) => import("./expression").Expression<T_5, true, "?column?">; | ||
now: () => import("./expression").Expression<Date, true, "now">; | ||
exists: (expression: import("./expression").Expression<any, any, any> | import("./query").Query<any>) => import("./expression").DefaultExpression<boolean, true>; | ||
andNotExists: (expression: import("./expression").Expression<any, any, any> | import("./query").Query<any>) => import("./expression").DefaultExpression<boolean, true>; | ||
andExists: (expression: import("./expression").Expression<any, any, any> | import("./query").Query<any>) => import("./expression").DefaultExpression<boolean, true>; | ||
notExists: (expression: import("./expression").Expression<any, any, any> | import("./query").Query<any>) => import("./expression").DefaultExpression<boolean, true>; | ||
coalesce: <DataType_5>(...expressions: (DataType_5 | import("./expression").Expression<DataType_5, boolean, any>)[]) => import("./expression").Expression<DataType_5, true, "coalesce">; | ||
/** @internal */ | ||
getTableDefinitions(): { | ||
name: string; | ||
originalDefinition: any; | ||
columns: (ColumnDefinitionFormat & { | ||
name: string; | ||
})[]; | ||
}[]; | ||
select: SelectFn<DefaultDbConfiguration>; | ||
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<DefaultDbConfiguration, 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, boolean, any, any> ? DataType_6 | import("./expression").Expression<DataType_6, boolean, string> | import("./query").Query<{ | ||
[key: string]: DataType_6 | import("./expression").Expression<DataType_6, boolean, string>; | ||
}> : never; } & { [K_3 in keyof import("./types").PickByValue<{ [K_2 in keyof Columns_2]: Columns_2[K_2] extends Column<any, any, any, infer IsNotNull_2, infer HasDefault_1, any> ? HasDefault_1 extends true ? false : IsNotNull_2 : never; }, false>]?: (Columns_2[K_3] extends Column<any, any, infer DataType_7, boolean, any, any> ? DataType_7 | import("./expression").Expression<DataType_7, boolean, string> | import("./query").Query<{ | ||
[key: string]: DataType_7 | import("./expression").Expression<DataType_7, boolean, string>; | ||
}> | 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_3, any, any> ? IsNotNull_3 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_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_9, any, any> ? DataType_9 : never, ColumnDefinitions[K_5] extends ColumnDefinition<any, infer IsNotNull_4, any> ? IsNotNull_4 : never, ColumnDefinitions[K_5] extends ColumnDefinition<any, any, infer HasDefault_2> ? HasDefault_2 : never, undefined> : never; }> : never; }; | ||
export {}; |
@@ -22,3 +22,3 @@ "use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.defineDb = void 0; | ||
exports.defineDb = exports.makeDefineDb = exports.setup = void 0; | ||
const sqlFunctions = __importStar(require("./sql-functions")); | ||
@@ -41,4 +41,10 @@ const insert_1 = require("./insert"); | ||
}; | ||
const defineDb = (tableDefinitions, queryExecutor, config) => { | ||
const setup = () => { | ||
return { | ||
defineDb: exports.makeDefineDb(), | ||
}; | ||
}; | ||
exports.setup = setup; | ||
const makeDefineDb = () => (tableDefinitions, queryExecutor) => { | ||
return { | ||
/** @internal */ | ||
@@ -71,2 +77,3 @@ getTableDefinitions() { | ||
}; | ||
exports.defineDb = defineDb; | ||
exports.makeDefineDb = makeDefineDb; | ||
exports.defineDb = exports.makeDefineDb(); |
@@ -32,3 +32,3 @@ import { Token } from './tokens'; | ||
[column: string]: any; | ||
} = object, IncludesStar = false> extends Query<Columns> { | ||
} = {}, IncludesStar = false> extends Query<Columns> { | ||
private readonly queryExecutor; | ||
@@ -35,0 +35,0 @@ private readonly returningKeys; |
@@ -6,7 +6,7 @@ import { Column, ColumnSet } from './column'; | ||
import { Star } from './sql-functions'; | ||
export declare type GetSelectableName<S> = S extends Column<infer A2, string, any, boolean, boolean, any> ? A2 : S extends Expression<any, boolean, infer A1> ? A1 : S extends SelectQuery<infer Columns> ? keyof Columns : never; | ||
export declare type GetSelectableName<S> = S extends Column<infer A2, string, any, boolean, boolean, any> ? A2 : S extends Expression<any, boolean, infer A1> ? A1 : S extends SelectQuery<any, infer Columns> ? keyof Columns : never; | ||
export declare type GetSelectable<C extends Selectable> = C extends ColumnSet<infer Columns> ? Columns : { | ||
[K in GetSelectableName<C>]: C; | ||
}; | ||
export declare type Selectable = Expression<any, any, any> | SelectQuery<any> | Column<any, any, any, boolean, boolean, any> | ColumnSet<any> | Star; | ||
export declare type Selectable = Expression<any, any, any> | SelectQuery<any, any> | Column<any, any, any, boolean, boolean, any> | ColumnSet<any> | Star; | ||
declare type ContainsStar<Selectables> = Extract<Star, Selectables> extends never ? false : true; | ||
@@ -13,0 +13,0 @@ declare type GetSelectables<Columns extends Array<any>> = { |
{ | ||
"name": "@ff00ff/mammoth", | ||
"license": "MIT", | ||
"version": "2.0.0-beta.1", | ||
"version": "2.0.0-beta.2", | ||
"main": "./.build/index.js", | ||
@@ -33,3 +33,3 @@ "types": "./.build/index.d.ts", | ||
"build": "tsc", | ||
"_prepublishOnly": "npm run build && npm test" | ||
"prepublishOnly": "npm run build" | ||
}, | ||
@@ -36,0 +36,0 @@ "jest": { |
204360
4349