knex 1.0.4 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -0
- package/bin/cli.js +16 -11
- package/bin/utils/cli-config-utils.js +33 -7
- package/bin/utils/migrationsLister.js +3 -3
- package/lib/client.js +4 -1
- package/lib/dialects/sqlite3/index.js +2 -0
- package/lib/migrations/util/is-module-type.js +6 -11
- package/lib/query/querybuilder.js +5 -1
- package/lib/query/querycompiler.js +30 -12
- package/package.json +8 -6
- package/types/index.d.ts +73 -68
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
# Master (Unreleased)
|
|
2
2
|
|
|
3
|
+
# 1.0.5 - 05 March, 2022
|
|
4
|
+
|
|
5
|
+
### New features:
|
|
6
|
+
|
|
7
|
+
- Override knexfile options with CLI options #4047
|
|
8
|
+
|
|
9
|
+
### Bug fixes:
|
|
10
|
+
|
|
11
|
+
- Stringify json value in update #5063
|
|
12
|
+
- Fix isModuleType() for yarn #4447
|
|
13
|
+
- Wrapped Unions Fixes #5072
|
|
14
|
+
- SQLite: Fix @vscode-sqlite3 error message #5081
|
|
15
|
+
- CLI: Fix completed migration listing #5060
|
|
16
|
+
|
|
17
|
+
### Typings:
|
|
18
|
+
|
|
19
|
+
- Make default generic parameters of `Knex` match the generic parameter types of `knex` #5021
|
|
20
|
+
- Update knex types for TS 4.7 #5095
|
|
21
|
+
|
|
3
22
|
# 1.0.4 - 13 March, 2022
|
|
4
23
|
|
|
5
24
|
### New features:
|
package/bin/cli.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
const rechoir = require('rechoir');
|
|
3
|
+
const merge = require('lodash/merge');
|
|
3
4
|
const interpret = require('interpret');
|
|
4
5
|
const resolveFrom = require('resolve-from');
|
|
5
6
|
const path = require('path');
|
|
@@ -9,6 +10,7 @@ const color = require('colorette');
|
|
|
9
10
|
const argv = require('getopts')(process.argv.slice(2));
|
|
10
11
|
const cliPkg = require('../package');
|
|
11
12
|
const {
|
|
13
|
+
parseConfigObj,
|
|
12
14
|
mkConfigObj,
|
|
13
15
|
resolveEnvironmentConfig,
|
|
14
16
|
exit,
|
|
@@ -59,8 +61,17 @@ async function initKnex(env, opts) {
|
|
|
59
61
|
env.configuration,
|
|
60
62
|
env.configPath
|
|
61
63
|
);
|
|
64
|
+
|
|
65
|
+
const optionsConfig = parseConfigObj(opts);
|
|
66
|
+
const config = merge(resolvedConfig, optionsConfig);
|
|
67
|
+
|
|
68
|
+
// Migrations directory gets defaulted if it is undefined.
|
|
69
|
+
if (!env.configPath && !config.migrations.directory) {
|
|
70
|
+
config.migrations.directory = null;
|
|
71
|
+
}
|
|
72
|
+
|
|
62
73
|
const knex = require(env.modulePath);
|
|
63
|
-
return knex(
|
|
74
|
+
return knex(config);
|
|
64
75
|
}
|
|
65
76
|
|
|
66
77
|
function invoke() {
|
|
@@ -138,16 +149,10 @@ function invoke() {
|
|
|
138
149
|
.option('--knexfile [path]', 'Specify the knexfile path.')
|
|
139
150
|
.option('--knexpath [path]', 'Specify the path to knex instance.')
|
|
140
151
|
.option('--cwd [path]', 'Specify the working directory.')
|
|
141
|
-
.option('--client [name]', 'Set DB client
|
|
142
|
-
.option('--connection [address]', 'Set DB connection
|
|
143
|
-
.option(
|
|
144
|
-
|
|
145
|
-
'Set migrations directory without a knexfile.'
|
|
146
|
-
)
|
|
147
|
-
.option(
|
|
148
|
-
'--migrations-table-name [path]',
|
|
149
|
-
'Set migrations table name without a knexfile.'
|
|
150
|
-
)
|
|
152
|
+
.option('--client [name]', 'Set DB client.')
|
|
153
|
+
.option('--connection [address]', 'Set DB connection.')
|
|
154
|
+
.option('--migrations-directory [path]', 'Set migrations directory.')
|
|
155
|
+
.option('--migrations-table-name [path]', 'Set migrations table name.')
|
|
151
156
|
.option(
|
|
152
157
|
'--env [name]',
|
|
153
158
|
'environment, default: process.env.NODE_ENV || development'
|
|
@@ -1,12 +1,39 @@
|
|
|
1
1
|
const { DEFAULT_EXT, DEFAULT_TABLE_NAME } = require('./constants');
|
|
2
2
|
const { resolveClientNameWithAliases } = require('../../lib/util/helpers');
|
|
3
|
-
const fs = require('fs');
|
|
4
3
|
const path = require('path');
|
|
5
4
|
const escalade = require('escalade/sync');
|
|
6
5
|
const tildify = require('tildify');
|
|
7
6
|
const color = require('colorette');
|
|
8
7
|
const argv = require('getopts')(process.argv.slice(2));
|
|
9
8
|
|
|
9
|
+
function findCaseInsensitiveProperty(propertyName, object) {
|
|
10
|
+
return Object.keys(object).find(
|
|
11
|
+
(key) => key.toLowerCase() === propertyName.toLowerCase()
|
|
12
|
+
);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function parseConfigObj(opts) {
|
|
16
|
+
const config = { migrations: {} };
|
|
17
|
+
|
|
18
|
+
if (opts.client) {
|
|
19
|
+
config.client = opts.client;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
if (opts.connection) {
|
|
23
|
+
config.connection = opts.connection;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
if (opts.migrationsDirectory) {
|
|
27
|
+
config.migrations.directory = opts.migrationsDirectory;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
if (opts.migrationsTableName) {
|
|
31
|
+
config.migrations.tableName = opts.migrationsTableName;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return config;
|
|
35
|
+
}
|
|
36
|
+
|
|
10
37
|
function mkConfigObj(opts) {
|
|
11
38
|
if (!opts.client) {
|
|
12
39
|
throw new Error(
|
|
@@ -17,16 +44,14 @@ function mkConfigObj(opts) {
|
|
|
17
44
|
const envName = opts.env || process.env.NODE_ENV || 'development';
|
|
18
45
|
const resolvedClientName = resolveClientNameWithAliases(opts.client);
|
|
19
46
|
const useNullAsDefault = resolvedClientName === 'sqlite3';
|
|
47
|
+
const parsedConfig = parseConfigObj(opts);
|
|
48
|
+
|
|
20
49
|
return {
|
|
21
50
|
ext: DEFAULT_EXT,
|
|
22
51
|
[envName]: {
|
|
52
|
+
...parsedConfig,
|
|
23
53
|
useNullAsDefault,
|
|
24
|
-
|
|
25
|
-
connection: opts.connection,
|
|
26
|
-
migrations: {
|
|
27
|
-
directory: opts.migrationsDirectory,
|
|
28
|
-
tableName: opts.migrationsTableName || DEFAULT_TABLE_NAME,
|
|
29
|
-
},
|
|
54
|
+
tableName: parsedConfig.tableName || DEFAULT_TABLE_NAME,
|
|
30
55
|
},
|
|
31
56
|
};
|
|
32
57
|
}
|
|
@@ -174,6 +199,7 @@ function findUpConfig(cwd, name, extensions) {
|
|
|
174
199
|
}
|
|
175
200
|
|
|
176
201
|
module.exports = {
|
|
202
|
+
parseConfigObj,
|
|
177
203
|
mkConfigObj,
|
|
178
204
|
resolveEnvironmentConfig,
|
|
179
205
|
exit,
|
|
@@ -6,7 +6,7 @@ function listMigrations(completed, newMigrations) {
|
|
|
6
6
|
let message = '';
|
|
7
7
|
|
|
8
8
|
if (completed.length === 0) {
|
|
9
|
-
message += color.red('No Completed Migration files Found
|
|
9
|
+
message += color.red('No Completed Migration files Found.\n');
|
|
10
10
|
} else {
|
|
11
11
|
message = color.green(
|
|
12
12
|
`Found ${completed.length} Completed Migration file/files.\n`
|
|
@@ -14,7 +14,7 @@ function listMigrations(completed, newMigrations) {
|
|
|
14
14
|
|
|
15
15
|
for (let i = 0; i < completed.length; i++) {
|
|
16
16
|
const file = completed[i];
|
|
17
|
-
message += color.cyan(`${file}
|
|
17
|
+
message += color.cyan(`${file.name}\n`);
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
|
|
@@ -27,7 +27,7 @@ function listMigrations(completed, newMigrations) {
|
|
|
27
27
|
|
|
28
28
|
for (let i = 0; i < newMigrations.length; i++) {
|
|
29
29
|
const file = newMigrations[i];
|
|
30
|
-
message += color.cyan(`${file.file}
|
|
30
|
+
message += color.cyan(`${file.file}\n`);
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
33
|
|
package/lib/client.js
CHANGED
|
@@ -189,7 +189,10 @@ class Client extends EventEmitter {
|
|
|
189
189
|
try {
|
|
190
190
|
this.driver = this._driver();
|
|
191
191
|
} catch (e) {
|
|
192
|
-
const
|
|
192
|
+
const driverName = this.aliasDriverName
|
|
193
|
+
? this.aliasDriverName
|
|
194
|
+
: this.driverName;
|
|
195
|
+
const message = `Knex: run\n$ npm install ${driverName} --save`;
|
|
193
196
|
this.logger.error(`${message}\n${e.message}\n${e.stack}`);
|
|
194
197
|
throw new Error(`${message}\n${e.message}`);
|
|
195
198
|
}
|
|
@@ -232,6 +232,8 @@ Object.assign(Client_SQLite3.prototype, {
|
|
|
232
232
|
dialect: 'sqlite3',
|
|
233
233
|
|
|
234
234
|
driverName: 'sqlite3',
|
|
235
|
+
// SqlLite3 driver package name is different from driver name.
|
|
236
|
+
aliasDriverName: '@vscode/sqlite3',
|
|
235
237
|
});
|
|
236
238
|
|
|
237
239
|
module.exports = Client_SQLite3;
|
|
@@ -1,14 +1,9 @@
|
|
|
1
|
-
const
|
|
1
|
+
const getPackageType = require('get-package-type');
|
|
2
2
|
|
|
3
3
|
module.exports = async function isModuleType(filepath) {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
await
|
|
8
|
-
|
|
9
|
-
if (packageJson.type === 'module') {
|
|
10
|
-
return true;
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
return process.env.npm_package_type === 'module' || filepath.endsWith('.mjs');
|
|
4
|
+
return (
|
|
5
|
+
filepath.endsWith('.mjs') ||
|
|
6
|
+
(!filepath.endsWith('.cjs') &&
|
|
7
|
+
(await getPackageType(filepath)) === 'module')
|
|
8
|
+
);
|
|
14
9
|
};
|
|
@@ -1236,7 +1236,11 @@ class Builder extends EventEmitter {
|
|
|
1236
1236
|
const obj = this._single.update || {};
|
|
1237
1237
|
this._method = 'update';
|
|
1238
1238
|
if (isString(values)) {
|
|
1239
|
-
|
|
1239
|
+
if (isPlainObject(returning)) {
|
|
1240
|
+
obj[values] = JSON.stringify(returning);
|
|
1241
|
+
} else {
|
|
1242
|
+
obj[values] = returning;
|
|
1243
|
+
}
|
|
1240
1244
|
if (arguments.length > 2) {
|
|
1241
1245
|
ret = arguments[2];
|
|
1242
1246
|
}
|
|
@@ -125,16 +125,27 @@ class QueryCompiler {
|
|
|
125
125
|
let sql = this.with();
|
|
126
126
|
|
|
127
127
|
let unionStatement = '';
|
|
128
|
-
|
|
129
|
-
const
|
|
128
|
+
|
|
129
|
+
const firstStatements = [];
|
|
130
|
+
const endStatements = [];
|
|
131
|
+
|
|
132
|
+
components.forEach((component) => {
|
|
130
133
|
const statement = this[component](this);
|
|
131
134
|
// We store the 'union' statement to append it at the end.
|
|
132
135
|
// We still need to call the component sequentially because of
|
|
133
136
|
// order of bindings.
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
137
|
+
switch (component) {
|
|
138
|
+
case 'union':
|
|
139
|
+
unionStatement = statement;
|
|
140
|
+
break;
|
|
141
|
+
case 'columns':
|
|
142
|
+
case 'join':
|
|
143
|
+
case 'where':
|
|
144
|
+
firstStatements.push(statement);
|
|
145
|
+
break;
|
|
146
|
+
default:
|
|
147
|
+
endStatements.push(statement);
|
|
148
|
+
break;
|
|
138
149
|
}
|
|
139
150
|
});
|
|
140
151
|
|
|
@@ -144,15 +155,22 @@ class QueryCompiler {
|
|
|
144
155
|
const wrapMainQuery =
|
|
145
156
|
this.grouped.union &&
|
|
146
157
|
this.grouped.union.map((u) => u.wrap).some((u) => u);
|
|
147
|
-
const allStatements =
|
|
148
|
-
(wrapMainQuery ? '(' : '') +
|
|
149
|
-
compact(statements).join(' ') +
|
|
150
|
-
(wrapMainQuery ? ')' : '');
|
|
151
158
|
|
|
152
159
|
if (this.onlyUnions()) {
|
|
153
|
-
|
|
160
|
+
const statements = compact(firstStatements.concat(endStatements)).join(
|
|
161
|
+
' '
|
|
162
|
+
);
|
|
163
|
+
sql += unionStatement + (statements ? ' ' + statements : '');
|
|
154
164
|
} else {
|
|
155
|
-
|
|
165
|
+
const allStatements =
|
|
166
|
+
(wrapMainQuery ? '(' : '') +
|
|
167
|
+
compact(firstStatements).join(' ') +
|
|
168
|
+
(wrapMainQuery ? ')' : '');
|
|
169
|
+
const endStat = compact(endStatements).join(' ');
|
|
170
|
+
sql +=
|
|
171
|
+
allStatements +
|
|
172
|
+
(unionStatement ? ' ' + unionStatement : '') +
|
|
173
|
+
(endStat ? ' ' + endStat : endStat);
|
|
156
174
|
}
|
|
157
175
|
return sql;
|
|
158
176
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "knex",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.5",
|
|
4
4
|
"description": "A batteries-included SQL query & schema builder for PostgresSQL, MySQL, CockroachDB, MSSQL and SQLite3",
|
|
5
5
|
"main": "knex",
|
|
6
6
|
"types": "types/index.d.ts",
|
|
@@ -55,10 +55,11 @@
|
|
|
55
55
|
},
|
|
56
56
|
"dependencies": {
|
|
57
57
|
"colorette": "2.0.16",
|
|
58
|
-
"commander": "^
|
|
59
|
-
"debug": "4.3.
|
|
58
|
+
"commander": "^9.1.0",
|
|
59
|
+
"debug": "4.3.4",
|
|
60
60
|
"escalade": "^3.1.1",
|
|
61
61
|
"esm": "^3.2.25",
|
|
62
|
+
"get-package-type": "^0.1.0",
|
|
62
63
|
"getopts": "2.3.0",
|
|
63
64
|
"interpret": "^2.2.0",
|
|
64
65
|
"lodash": "^4.17.21",
|
|
@@ -111,6 +112,7 @@
|
|
|
111
112
|
"eslint": "^8.8.0",
|
|
112
113
|
"eslint-config-prettier": "^8.3.0",
|
|
113
114
|
"eslint-plugin-import": "^2.25.4",
|
|
115
|
+
"eslint-plugin-mocha-no-only": "^1.1.1",
|
|
114
116
|
"husky": "^4.3.8",
|
|
115
117
|
"jake": "^8.1.1",
|
|
116
118
|
"JSONStream": "^1.3.5",
|
|
@@ -123,17 +125,17 @@
|
|
|
123
125
|
"oracledb": "^5.3.0",
|
|
124
126
|
"pg": "^8.7.1",
|
|
125
127
|
"pg-query-stream": "^4.2.1",
|
|
126
|
-
"prettier": "2.
|
|
128
|
+
"prettier": "2.6.2",
|
|
127
129
|
"rimraf": "^3.0.2",
|
|
128
130
|
"sinon": "^13.0.1",
|
|
129
131
|
"sinon-chai": "^3.7.0",
|
|
130
132
|
"source-map-support": "^0.5.21",
|
|
131
133
|
"tap-spec": "^5.0.0",
|
|
132
134
|
"tape": "^5.5.0",
|
|
133
|
-
"tedious": "^
|
|
135
|
+
"tedious": "^14.3.0",
|
|
134
136
|
"toxiproxy-node-client": "^2.0.6",
|
|
135
137
|
"ts-node": "^10.4.0",
|
|
136
|
-
"tsd": "^0.
|
|
138
|
+
"tsd": "^0.20.0",
|
|
137
139
|
"typescript": "4.5.5"
|
|
138
140
|
},
|
|
139
141
|
"buildDependencies": [
|
package/types/index.d.ts
CHANGED
|
@@ -30,6 +30,11 @@ type StrKey<T> = string & keyof T;
|
|
|
30
30
|
|
|
31
31
|
// If T is unknown then convert to any, else retain original
|
|
32
32
|
type UnknownToAny<T> = unknown extends T ? any : T;
|
|
33
|
+
type CurlyCurlyToAny<T> = T extends unknown ? // distribute
|
|
34
|
+
(<U>() => U extends T ? 0 : 1) extends
|
|
35
|
+
(<U>() => U extends {} ? 0 : 1) ? any : T
|
|
36
|
+
: never;
|
|
37
|
+
type UnknownOrCurlyCurlyToAny<T> = [UnknownToAny<T> | CurlyCurlyToAny<T>][0];
|
|
33
38
|
type AnyToUnknown<T> = unknown extends T ? unknown : T;
|
|
34
39
|
type AnyOrUnknownToOther<T1, T2> = unknown extends T1 ? T2 : T1;
|
|
35
40
|
|
|
@@ -193,7 +198,7 @@ declare namespace DeferredKeySelection {
|
|
|
193
198
|
? DeferredKeySelection<TBase, TKeys | TKey, true, TAliasMapping, TSingle, TIntersectProps, TUnionProps>
|
|
194
199
|
: DeferredKeySelection<unknown, TKey, true>;
|
|
195
200
|
|
|
196
|
-
type AddAliases<TSelection, T> = TSelection extends DeferredKeySelection<
|
|
201
|
+
type AddAliases<TSelection, T extends {}> = TSelection extends DeferredKeySelection<
|
|
197
202
|
infer TBase,
|
|
198
203
|
infer TKeys,
|
|
199
204
|
infer THasSelect,
|
|
@@ -219,7 +224,7 @@ declare namespace DeferredKeySelection {
|
|
|
219
224
|
|
|
220
225
|
// Convenience utility to set base, keys and aliases in a single type
|
|
221
226
|
// application
|
|
222
|
-
type Augment<T, TBase, TKey extends string, TAliasMapping = {}> = AddAliases<
|
|
227
|
+
type Augment<T, TBase, TKey extends string, TAliasMapping extends {} = {}> = AddAliases<
|
|
223
228
|
AddKey<SetBase<T, TBase>, TKey>,
|
|
224
229
|
TAliasMapping
|
|
225
230
|
>;
|
|
@@ -234,7 +239,7 @@ declare namespace DeferredKeySelection {
|
|
|
234
239
|
infer TIntersectProps,
|
|
235
240
|
infer TUnionProps
|
|
236
241
|
>
|
|
237
|
-
?
|
|
242
|
+
? UnknownOrCurlyCurlyToAny<
|
|
238
243
|
// ^ We convert final result to any if it is unknown for backward compatibility.
|
|
239
244
|
// Historically knex typings have been liberal with returning any and changing
|
|
240
245
|
// default return type to unknown would be a major breaking change for users.
|
|
@@ -263,11 +268,11 @@ declare namespace DeferredKeySelection {
|
|
|
263
268
|
: TSelection extends DeferredKeySelection.Any[]
|
|
264
269
|
? Knex.ResolveTableType<ResolveOne<TSelection[0]>>[]
|
|
265
270
|
: TSelection extends (infer I)[]
|
|
266
|
-
?
|
|
267
|
-
:
|
|
271
|
+
? UnknownOrCurlyCurlyToAny<Knex.ResolveTableType<I>>[]
|
|
272
|
+
: UnknownOrCurlyCurlyToAny<Knex.ResolveTableType<TSelection>>;
|
|
268
273
|
}
|
|
269
274
|
|
|
270
|
-
type AggregationQueryResult<TResult, TIntersectProps2> = ArrayIfAlready<
|
|
275
|
+
type AggregationQueryResult<TResult, TIntersectProps2 extends {}> = ArrayIfAlready<
|
|
271
276
|
TResult,
|
|
272
277
|
UnwrapArrayMember<TResult> extends DeferredKeySelection<
|
|
273
278
|
infer TBase,
|
|
@@ -307,13 +312,13 @@ interface DMLOptions {
|
|
|
307
312
|
includeTriggerModifications?: boolean;
|
|
308
313
|
}
|
|
309
314
|
|
|
310
|
-
export interface Knex<TRecord extends {} = any, TResult =
|
|
315
|
+
export interface Knex<TRecord extends {} = any, TResult = any[]>
|
|
311
316
|
extends Knex.QueryInterface<TRecord, TResult>, events.EventEmitter {
|
|
312
317
|
<TTable extends Knex.TableNames>(
|
|
313
318
|
tableName: TTable,
|
|
314
319
|
options?: TableOptions
|
|
315
320
|
): Knex.QueryBuilder<Knex.TableType<TTable>, DeferredKeySelection<Knex.ResolveTableType<Knex.TableType<TTable>>, never>[]>;
|
|
316
|
-
<TRecord2 = TRecord, TResult2 = DeferredKeySelection<TRecord2, never>[]>(
|
|
321
|
+
<TRecord2 extends {} = TRecord, TResult2 = DeferredKeySelection<TRecord2, never>[]>(
|
|
317
322
|
tableName?: Knex.TableDescriptor | Knex.AliasDict,
|
|
318
323
|
options?: TableOptions
|
|
319
324
|
): Knex.QueryBuilder<TRecord2, TResult2>;
|
|
@@ -340,7 +345,7 @@ export interface Knex<TRecord extends {} = any, TResult = Record<string, any>[]>
|
|
|
340
345
|
destroy(callback: Function): void;
|
|
341
346
|
destroy(): Promise<void>;
|
|
342
347
|
|
|
343
|
-
batchInsert<TRecord2 = TRecord, TResult2 = number[]>(
|
|
348
|
+
batchInsert<TRecord2 extends {} = TRecord, TResult2 = number[]>(
|
|
344
349
|
tableName: Knex.TableDescriptor,
|
|
345
350
|
data: TRecord2 extends Knex.CompositeTableType<unknown>
|
|
346
351
|
? ReadonlyArray<Knex.ResolveTableType<TRecord2, 'insert'>>
|
|
@@ -349,7 +354,7 @@ export interface Knex<TRecord extends {} = any, TResult = Record<string, any>[]>
|
|
|
349
354
|
): Knex.BatchInsertBuilder<TRecord2, TResult2>;
|
|
350
355
|
|
|
351
356
|
schema: Knex.SchemaBuilder;
|
|
352
|
-
queryBuilder<TRecord2 = TRecord, TResult2 = TResult>(): Knex.QueryBuilder<
|
|
357
|
+
queryBuilder<TRecord2 extends {} = TRecord, TResult2 = TResult>(): Knex.QueryBuilder<
|
|
353
358
|
TRecord2,
|
|
354
359
|
TResult2
|
|
355
360
|
>;
|
|
@@ -405,7 +410,7 @@ export declare namespace Knex {
|
|
|
405
410
|
interface ValueDict extends Dict<Value | Knex.QueryBuilder> {}
|
|
406
411
|
interface AliasDict extends Dict<string> {}
|
|
407
412
|
|
|
408
|
-
type ColumnDescriptor<TRecord, TResult> =
|
|
413
|
+
type ColumnDescriptor<TRecord extends {}, TResult> =
|
|
409
414
|
| string
|
|
410
415
|
| Knex.Raw
|
|
411
416
|
| Knex.QueryBuilder<TRecord, TResult>
|
|
@@ -452,7 +457,7 @@ export declare namespace Knex {
|
|
|
452
457
|
? TCompositeTableType[TScope]
|
|
453
458
|
: TCompositeTableType;
|
|
454
459
|
|
|
455
|
-
interface OnConflictQueryBuilder<TRecord, TResult> {
|
|
460
|
+
interface OnConflictQueryBuilder<TRecord extends {}, TResult> {
|
|
456
461
|
ignore(): QueryBuilder<TRecord, TResult>;
|
|
457
462
|
merge(mergeColumns?: (keyof TRecord)[]): QueryBuilder<TRecord, TResult>;
|
|
458
463
|
merge(data?: Extract<DbRecord<ResolveTableType<TRecord, 'update'>>, object>): QueryBuilder<TRecord, TResult>;
|
|
@@ -1026,7 +1031,7 @@ export declare namespace Knex {
|
|
|
1026
1031
|
truncate(): QueryBuilder<TRecord, void>;
|
|
1027
1032
|
}
|
|
1028
1033
|
|
|
1029
|
-
interface As<TRecord, TResult> {
|
|
1034
|
+
interface As<TRecord extends {}, TResult> {
|
|
1030
1035
|
(columnName: keyof TRecord): QueryBuilder<TRecord, TResult>;
|
|
1031
1036
|
(columnName: string): QueryBuilder<TRecord, TResult>;
|
|
1032
1037
|
}
|
|
@@ -1042,7 +1047,7 @@ export declare namespace Knex {
|
|
|
1042
1047
|
Dict,
|
|
1043
1048
|
{}
|
|
1044
1049
|
>
|
|
1045
|
-
|
|
1050
|
+
> & {}; // filters out `null` and `undefined`
|
|
1046
1051
|
|
|
1047
1052
|
interface AliasQueryBuilder<TRecord extends {} = any, TResult = unknown[]> {
|
|
1048
1053
|
<
|
|
@@ -1099,11 +1104,11 @@ export declare namespace Knex {
|
|
|
1099
1104
|
ColumnNameQueryBuilder<TRecord, TResult> {
|
|
1100
1105
|
(): QueryBuilder<TRecord, TResult>;
|
|
1101
1106
|
|
|
1102
|
-
<TResult2 = ArrayIfAlready<TResult, any>, TInnerRecord = any, TInnerResult = any>(
|
|
1107
|
+
<TResult2 = ArrayIfAlready<TResult, any>, TInnerRecord extends {} = any, TInnerResult = any>(
|
|
1103
1108
|
...subQueryBuilders: readonly QueryBuilder<TInnerRecord, TInnerResult>[]
|
|
1104
1109
|
): QueryBuilder<TRecord, TResult2>;
|
|
1105
1110
|
|
|
1106
|
-
<TResult2 = ArrayIfAlready<TResult, any>, TInnerRecord = any, TInnerResult = any>(
|
|
1111
|
+
<TResult2 = ArrayIfAlready<TResult, any>, TInnerRecord extends {} = any, TInnerResult = any>(
|
|
1107
1112
|
subQueryBuilders: readonly QueryBuilder<TInnerRecord, TInnerResult>[]
|
|
1108
1113
|
): QueryBuilder<TRecord, TResult2>;
|
|
1109
1114
|
}
|
|
@@ -1115,53 +1120,53 @@ export declare namespace Knex {
|
|
|
1115
1120
|
singleValue?: boolean;
|
|
1116
1121
|
}
|
|
1117
1122
|
|
|
1118
|
-
interface JsonExtract<TRecord extends {} = any, TResult
|
|
1123
|
+
interface JsonExtract<TRecord extends {} = any, TResult = any> {
|
|
1119
1124
|
(column: string | Raw | QueryBuilder, path: string, alias?: string, singleValue?: boolean): QueryBuilder<TRecord, TResult>;
|
|
1120
1125
|
(column: JsonExtraction[] | any[][], singleValue?: boolean): QueryBuilder<TRecord, TResult>;
|
|
1121
1126
|
}
|
|
1122
1127
|
|
|
1123
|
-
interface JsonSet<TRecord extends {} = any, TResult
|
|
1128
|
+
interface JsonSet<TRecord extends {} = any, TResult = any> {
|
|
1124
1129
|
(column: string | Raw | QueryBuilder, path: string, value: any, alias?: string): QueryBuilder<TRecord, TResult>;
|
|
1125
1130
|
}
|
|
1126
1131
|
|
|
1127
|
-
interface JsonInsert<TRecord extends {} = any, TResult
|
|
1132
|
+
interface JsonInsert<TRecord extends {} = any, TResult = any> {
|
|
1128
1133
|
(column: string | Raw | QueryBuilder, path: string, value: any, alias?: string): QueryBuilder<TRecord, TResult>;
|
|
1129
1134
|
}
|
|
1130
1135
|
|
|
1131
|
-
interface JsonRemove<TRecord extends {} = any, TResult
|
|
1136
|
+
interface JsonRemove<TRecord extends {} = any, TResult = any> {
|
|
1132
1137
|
(column: string | Raw | QueryBuilder, path: string, alias?: string): QueryBuilder<TRecord, TResult>;
|
|
1133
1138
|
}
|
|
1134
1139
|
|
|
1135
|
-
interface HintComment<TRecord extends {} = any, TResult
|
|
1140
|
+
interface HintComment<TRecord extends {} = any, TResult = any> {
|
|
1136
1141
|
(hint: string): QueryBuilder<TRecord, TResult>;
|
|
1137
1142
|
(hints: readonly string[]): QueryBuilder<TRecord, TResult>;
|
|
1138
1143
|
}
|
|
1139
1144
|
|
|
1140
|
-
interface Table<TRecord extends {} = any, TResult
|
|
1145
|
+
interface Table<TRecord extends {} = any, TResult = any> {
|
|
1141
1146
|
<
|
|
1142
1147
|
TTable extends TableNames,
|
|
1143
|
-
TRecord2 = TableType<TTable>,
|
|
1148
|
+
TRecord2 extends {} = TableType<TTable>,
|
|
1144
1149
|
TResult2 = DeferredKeySelection.ReplaceBase<TResult, ResolveTableType<TRecord2>>
|
|
1145
1150
|
>(
|
|
1146
1151
|
tableName: TTable,
|
|
1147
1152
|
options?: TableOptions
|
|
1148
1153
|
): QueryBuilder<TRecord2, TResult2>;
|
|
1149
1154
|
<
|
|
1150
|
-
TRecord2 =
|
|
1155
|
+
TRecord2 extends {} = {},
|
|
1151
1156
|
TResult2 = DeferredKeySelection.ReplaceBase<TResult, TRecord2>
|
|
1152
1157
|
>(
|
|
1153
1158
|
tableName: TableDescriptor | AliasDict,
|
|
1154
1159
|
options?: TableOptions
|
|
1155
1160
|
): QueryBuilder<TRecord2, TResult2>;
|
|
1156
1161
|
<
|
|
1157
|
-
TRecord2 =
|
|
1162
|
+
TRecord2 extends {} = {},
|
|
1158
1163
|
TResult2 = DeferredKeySelection.ReplaceBase<TResult, TRecord2>
|
|
1159
1164
|
>(
|
|
1160
1165
|
callback: Function,
|
|
1161
1166
|
options?: TableOptions
|
|
1162
1167
|
): QueryBuilder<TRecord2, TResult2>;
|
|
1163
1168
|
<
|
|
1164
|
-
TRecord2 =
|
|
1169
|
+
TRecord2 extends {} = {},
|
|
1165
1170
|
TResult2 = DeferredKeySelection.ReplaceBase<TResult, TRecord2>
|
|
1166
1171
|
>(
|
|
1167
1172
|
raw: Raw,
|
|
@@ -1199,7 +1204,7 @@ export declare namespace Knex {
|
|
|
1199
1204
|
): QueryBuilder<TRecord2, TResult2>;
|
|
1200
1205
|
<
|
|
1201
1206
|
TTable extends TableNames,
|
|
1202
|
-
TRecord2 = ResolveTableType<TRecord> &
|
|
1207
|
+
TRecord2 extends {} = ResolveTableType<TRecord> &
|
|
1203
1208
|
ResolveTableType<TableType<TTable>>,
|
|
1204
1209
|
TResult2 = DeferredKeySelection.ReplaceBase<TResult, TRecord2>
|
|
1205
1210
|
>(
|
|
@@ -1236,7 +1241,7 @@ export declare namespace Knex {
|
|
|
1236
1241
|
TKey1 extends StrKey<ResolveTableType<TableType<TTable1>>> & StrKey<TRecord1>,
|
|
1237
1242
|
TKey2 extends StrKey<ResolveTableType<TableType<TTable2>>>,
|
|
1238
1243
|
TRecord1 = ResolveTableType<TRecord>,
|
|
1239
|
-
TRecord2 = TRecord1 & ResolveTableType<TableType<TTable2>>,
|
|
1244
|
+
TRecord2 extends {} = TRecord1 & ResolveTableType<TableType<TTable2>>,
|
|
1240
1245
|
TResult2 = DeferredKeySelection.ReplaceBase<TResult, TRecord2>
|
|
1241
1246
|
>(
|
|
1242
1247
|
tableName: TTable2,
|
|
@@ -1249,7 +1254,7 @@ export declare namespace Knex {
|
|
|
1249
1254
|
TKey1 extends StrKey<ResolveTableType<TableType<TTable1>>> & StrKey<TRecord1>,
|
|
1250
1255
|
TKey2 extends StrKey<ResolveTableType<TableType<TTable2>>>,
|
|
1251
1256
|
TRecord1 = ResolveTableType<TRecord>,
|
|
1252
|
-
TRecord2 = TRecord1 & ResolveTableType<TableType<TTable2>>,
|
|
1257
|
+
TRecord2 extends {} = TRecord1 & ResolveTableType<TableType<TTable2>>,
|
|
1253
1258
|
TResult2 = DeferredKeySelection.ReplaceBase<TResult, TRecord2>
|
|
1254
1259
|
>(
|
|
1255
1260
|
tableName: TTable2,
|
|
@@ -1280,7 +1285,7 @@ export declare namespace Knex {
|
|
|
1280
1285
|
TKey1 extends StrKey<ResolveTableType<TableType<TTable1>>> & StrKey<TRecord1>,
|
|
1281
1286
|
TKey2 extends StrKey<ResolveTableType<TableType<TTable2>>>,
|
|
1282
1287
|
TRecord1 = ResolveTableType<TRecord>,
|
|
1283
|
-
TRecord2 = TRecord1 & ResolveTableType<TableType<TTable2>>,
|
|
1288
|
+
TRecord2 extends {} = TRecord1 & ResolveTableType<TableType<TTable2>>,
|
|
1284
1289
|
TResult2 = DeferredKeySelection.ReplaceBase<TResult, TRecord2>
|
|
1285
1290
|
>(
|
|
1286
1291
|
tableName: TTable2,
|
|
@@ -1294,7 +1299,7 @@ export declare namespace Knex {
|
|
|
1294
1299
|
TKey1 extends StrKey<ResolveTableType<TableType<TTable1>>> & StrKey<TRecord1>,
|
|
1295
1300
|
TKey2 extends StrKey<ResolveTableType<TableType<TTable2>>>,
|
|
1296
1301
|
TRecord1 = ResolveTableType<TRecord>,
|
|
1297
|
-
TRecord2 = TRecord1 & ResolveTableType<TableType<TTable2>>,
|
|
1302
|
+
TRecord2 extends {} = TRecord1 & ResolveTableType<TableType<TTable2>>,
|
|
1298
1303
|
TResult2 = DeferredKeySelection.ReplaceBase<TResult, TRecord2>
|
|
1299
1304
|
>(
|
|
1300
1305
|
tableName: TTable2,
|
|
@@ -1371,22 +1376,22 @@ export declare namespace Knex {
|
|
|
1371
1376
|
type(type: string): JoinClause;
|
|
1372
1377
|
}
|
|
1373
1378
|
|
|
1374
|
-
interface JoinRaw<TRecord = any, TResult = unknown[]> {
|
|
1379
|
+
interface JoinRaw<TRecord extends {} = any, TResult = unknown[]> {
|
|
1375
1380
|
(tableName: string, binding?: Value | Value[] | ValueDict): QueryBuilder<
|
|
1376
1381
|
TRecord,
|
|
1377
1382
|
TResult
|
|
1378
1383
|
>;
|
|
1379
1384
|
}
|
|
1380
1385
|
|
|
1381
|
-
interface Using<TRecord = any, TResult = unknown[]> {
|
|
1386
|
+
interface Using<TRecord extends {} = any, TResult = unknown[]> {
|
|
1382
1387
|
(tables: string[]): QueryBuilder<TRecord, TResult>;
|
|
1383
1388
|
}
|
|
1384
1389
|
|
|
1385
|
-
interface With<TRecord = any, TResult = unknown[]>
|
|
1390
|
+
interface With<TRecord extends {} = any, TResult = unknown[]>
|
|
1386
1391
|
extends WithRaw<TRecord, TResult>,
|
|
1387
1392
|
WithWrapped<TRecord, TResult> {}
|
|
1388
1393
|
|
|
1389
|
-
interface WithRaw<TRecord = any, TResult = unknown[]> {
|
|
1394
|
+
interface WithRaw<TRecord extends {} = any, TResult = unknown[]> {
|
|
1390
1395
|
(alias: string, raw: Raw | QueryBuilder): QueryBuilder<TRecord, TResult>;
|
|
1391
1396
|
(alias: string, sql: string, bindings?: readonly Value[] | Object): QueryBuilder<
|
|
1392
1397
|
TRecord,
|
|
@@ -1399,11 +1404,11 @@ export declare namespace Knex {
|
|
|
1399
1404
|
>;
|
|
1400
1405
|
}
|
|
1401
1406
|
|
|
1402
|
-
interface WithSchema<TRecord = any, TResult = unknown[]> {
|
|
1407
|
+
interface WithSchema<TRecord extends {} = any, TResult = unknown[]> {
|
|
1403
1408
|
(schema: string): QueryBuilder<TRecord, TResult>;
|
|
1404
1409
|
}
|
|
1405
1410
|
|
|
1406
|
-
interface WithWrapped<TRecord = any, TResult = unknown[]> {
|
|
1411
|
+
interface WithWrapped<TRecord extends {} = any, TResult = unknown[]> {
|
|
1407
1412
|
(alias: string, queryBuilder: QueryBuilder): QueryBuilder<TRecord, TResult>;
|
|
1408
1413
|
(
|
|
1409
1414
|
alias: string,
|
|
@@ -1417,7 +1422,7 @@ export declare namespace Knex {
|
|
|
1417
1422
|
): QueryBuilder<TRecord, TResult>;
|
|
1418
1423
|
}
|
|
1419
1424
|
|
|
1420
|
-
interface Where<TRecord = any, TResult = unknown>
|
|
1425
|
+
interface Where<TRecord extends {} = any, TResult = unknown>
|
|
1421
1426
|
extends WhereRaw<TRecord, TResult>,
|
|
1422
1427
|
WhereWrapped<TRecord, TResult>,
|
|
1423
1428
|
WhereNull<TRecord, TResult> {
|
|
@@ -1447,13 +1452,13 @@ export declare namespace Knex {
|
|
|
1447
1452
|
TResult
|
|
1448
1453
|
>;
|
|
1449
1454
|
|
|
1450
|
-
<T extends keyof ResolveTableType<TRecord>, TRecordInner, TResultInner>(
|
|
1455
|
+
<T extends keyof ResolveTableType<TRecord>, TRecordInner extends {}, TResultInner>(
|
|
1451
1456
|
columnName: T,
|
|
1452
1457
|
operator: ComparisonOperator,
|
|
1453
1458
|
value: QueryBuilder<TRecordInner, TResultInner>
|
|
1454
1459
|
): QueryBuilder<TRecord, TResult>;
|
|
1455
1460
|
|
|
1456
|
-
<TRecordInner, TResultInner>(
|
|
1461
|
+
<TRecordInner extends {}, TResultInner>(
|
|
1457
1462
|
columnName: string,
|
|
1458
1463
|
operator: string,
|
|
1459
1464
|
value: QueryBuilder<TRecordInner, TResultInner>
|
|
@@ -1464,28 +1469,28 @@ export declare namespace Knex {
|
|
|
1464
1469
|
TResult
|
|
1465
1470
|
>;
|
|
1466
1471
|
|
|
1467
|
-
<TRecordInner, TResultInner>(
|
|
1472
|
+
<TRecordInner extends {}, TResultInner>(
|
|
1468
1473
|
left: Raw,
|
|
1469
1474
|
operator: string,
|
|
1470
1475
|
right: QueryBuilder<TRecordInner, TResultInner>
|
|
1471
1476
|
): QueryBuilder<TRecord, TResult>;
|
|
1472
1477
|
}
|
|
1473
1478
|
|
|
1474
|
-
interface WhereRaw<TRecord = any, TResult = unknown[]>
|
|
1479
|
+
interface WhereRaw<TRecord extends {} = any, TResult = unknown[]>
|
|
1475
1480
|
extends RawQueryBuilder<TRecord, TResult> {
|
|
1476
1481
|
(condition: boolean): QueryBuilder<TRecord, TResult>;
|
|
1477
1482
|
}
|
|
1478
1483
|
|
|
1479
|
-
interface WhereWrapped<TRecord = any, TResult = unknown[]> {
|
|
1484
|
+
interface WhereWrapped<TRecord extends {} = any, TResult = unknown[]> {
|
|
1480
1485
|
(callback: QueryCallback<TRecord, TResult>): QueryBuilder<TRecord, TResult>;
|
|
1481
1486
|
}
|
|
1482
1487
|
|
|
1483
|
-
interface WhereNull<TRecord = any, TResult = unknown[]> {
|
|
1488
|
+
interface WhereNull<TRecord extends {} = any, TResult = unknown[]> {
|
|
1484
1489
|
(columnName: keyof TRecord): QueryBuilder<TRecord, TResult>;
|
|
1485
1490
|
(columnName: string): QueryBuilder<TRecord, TResult>;
|
|
1486
1491
|
}
|
|
1487
1492
|
|
|
1488
|
-
interface WhereBetween<TRecord = any, TResult = unknown[]> {
|
|
1493
|
+
interface WhereBetween<TRecord extends {} = any, TResult = unknown[]> {
|
|
1489
1494
|
<K extends keyof TRecord>(
|
|
1490
1495
|
columnName: K,
|
|
1491
1496
|
range: readonly [DbColumn<TRecord[K]>, DbColumn<TRecord[K]>]
|
|
@@ -1493,22 +1498,22 @@ export declare namespace Knex {
|
|
|
1493
1498
|
(columnName: string, range: readonly [Value, Value]): QueryBuilder<TRecord, TResult>;
|
|
1494
1499
|
}
|
|
1495
1500
|
|
|
1496
|
-
interface WhereExists<TRecord = any, TResult = unknown[]> {
|
|
1501
|
+
interface WhereExists<TRecord extends {} = any, TResult = unknown[]> {
|
|
1497
1502
|
(callback: QueryCallback<TRecord, TResult>): QueryBuilder<TRecord, TResult>;
|
|
1498
|
-
<TRecordInner, TResultInner>(
|
|
1503
|
+
<TRecordInner extends {}, TResultInner>(
|
|
1499
1504
|
query: QueryBuilder<TRecordInner, TResultInner>
|
|
1500
1505
|
): QueryBuilder<TRecord, TResult>;
|
|
1501
1506
|
}
|
|
1502
1507
|
|
|
1503
|
-
interface WhereJsonObject<TRecord = any, TResult = unknown[]> {
|
|
1508
|
+
interface WhereJsonObject<TRecord extends {} = any, TResult = unknown[]> {
|
|
1504
1509
|
(columnName: keyof TRecord, value: any): QueryBuilder<TRecord, TResult>;
|
|
1505
1510
|
}
|
|
1506
1511
|
|
|
1507
|
-
interface WhereJsonPath<TRecord = any, TResult = unknown[]> {
|
|
1512
|
+
interface WhereJsonPath<TRecord extends {} = any, TResult = unknown[]> {
|
|
1508
1513
|
(columnName: keyof TRecord, jsonPath: string, operator: string, value: any): QueryBuilder<TRecord, TResult>;
|
|
1509
1514
|
}
|
|
1510
1515
|
|
|
1511
|
-
interface WhereIn<TRecord = any, TResult = unknown[]> {
|
|
1516
|
+
interface WhereIn<TRecord extends {} = any, TResult = unknown[]> {
|
|
1512
1517
|
<K extends keyof ResolveTableType<TRecord>>(
|
|
1513
1518
|
columnName: K,
|
|
1514
1519
|
values: readonly DbColumn<ResolveTableType<TRecord>[K]>[] | QueryCallback
|
|
@@ -1525,19 +1530,19 @@ export declare namespace Knex {
|
|
|
1525
1530
|
TRecord,
|
|
1526
1531
|
TResult
|
|
1527
1532
|
>;
|
|
1528
|
-
<K extends keyof TRecord, TRecordInner, TResultInner>(
|
|
1533
|
+
<K extends keyof TRecord, TRecordInner extends {}, TResultInner>(
|
|
1529
1534
|
columnName: K,
|
|
1530
1535
|
values: QueryBuilder<TRecordInner, TRecord[K]>
|
|
1531
1536
|
): QueryBuilder<TRecord, TResult>;
|
|
1532
|
-
<TRecordInner, TResultInner>(
|
|
1537
|
+
<TRecordInner extends {}, TResultInner>(
|
|
1533
1538
|
columnName: string,
|
|
1534
1539
|
values: Value[] | QueryBuilder<TRecordInner, TResultInner>
|
|
1535
1540
|
): QueryBuilder<TRecord, TResult>;
|
|
1536
|
-
<K extends keyof TRecord, TRecordInner, TResultInner>(
|
|
1541
|
+
<K extends keyof TRecord, TRecordInner extends {}, TResultInner>(
|
|
1537
1542
|
columnNames: readonly K[],
|
|
1538
1543
|
values: QueryBuilder<TRecordInner, TRecord[K]>
|
|
1539
1544
|
): QueryBuilder<TRecord, TResult>;
|
|
1540
|
-
<TRecordInner, TResultInner>(
|
|
1545
|
+
<TRecordInner extends {}, TResultInner>(
|
|
1541
1546
|
columnNames: readonly string[],
|
|
1542
1547
|
values: QueryBuilder<TRecordInner, TResultInner>
|
|
1543
1548
|
): QueryBuilder<TRecord, TResult>;
|
|
@@ -1547,7 +1552,7 @@ export declare namespace Knex {
|
|
|
1547
1552
|
// by extracting out a common base interface will not work because order of overloads
|
|
1548
1553
|
// is significant.
|
|
1549
1554
|
|
|
1550
|
-
interface AsymmetricAggregation<TRecord = any, TResult = unknown[], TValue = any> {
|
|
1555
|
+
interface AsymmetricAggregation<TRecord extends {} = any, TResult = unknown[], TValue = any> {
|
|
1551
1556
|
<
|
|
1552
1557
|
TOptions extends { "as": string },
|
|
1553
1558
|
TResult2 = AggregationQueryResult<TResult, {[k in TOptions["as"]]: TValue}>
|
|
@@ -1567,7 +1572,7 @@ export declare namespace Knex {
|
|
|
1567
1572
|
): QueryBuilder<TRecord, TResult2>;
|
|
1568
1573
|
}
|
|
1569
1574
|
|
|
1570
|
-
interface TypePreservingAggregation<TRecord = any, TResult = unknown[], TValue = any> {
|
|
1575
|
+
interface TypePreservingAggregation<TRecord extends {} = any, TResult = unknown[], TValue = any> {
|
|
1571
1576
|
<
|
|
1572
1577
|
TKey extends keyof ResolveTableType<TRecord>,
|
|
1573
1578
|
TOptions extends { "as": string },
|
|
@@ -1599,7 +1604,7 @@ export declare namespace Knex {
|
|
|
1599
1604
|
): QueryBuilder<TRecord, TResult2>;
|
|
1600
1605
|
}
|
|
1601
1606
|
|
|
1602
|
-
interface AnalyticFunction<TRecord = any, TResult = unknown[]> {
|
|
1607
|
+
interface AnalyticFunction<TRecord extends {} = any, TResult = unknown[]> {
|
|
1603
1608
|
<
|
|
1604
1609
|
TAlias extends string,
|
|
1605
1610
|
TResult2 = AggregationQueryResult<TResult, {[x in TAlias]: number}>
|
|
@@ -1617,11 +1622,11 @@ export declare namespace Knex {
|
|
|
1617
1622
|
>;
|
|
1618
1623
|
}
|
|
1619
1624
|
|
|
1620
|
-
interface GroupBy<TRecord = any, TResult = unknown[]>
|
|
1625
|
+
interface GroupBy<TRecord extends {} = any, TResult = unknown[]>
|
|
1621
1626
|
extends RawQueryBuilder<TRecord, TResult>,
|
|
1622
1627
|
ColumnNameQueryBuilder<TRecord, TResult> {}
|
|
1623
1628
|
|
|
1624
|
-
interface OrderBy<TRecord = any, TResult = unknown[]> {
|
|
1629
|
+
interface OrderBy<TRecord extends {} = any, TResult = unknown[]> {
|
|
1625
1630
|
(columnName: keyof TRecord | QueryBuilder, order?: 'asc' | 'desc', nulls?: 'first' | 'last'): QueryBuilder<
|
|
1626
1631
|
TRecord,
|
|
1627
1632
|
TResult
|
|
@@ -1645,10 +1650,10 @@ export declare namespace Knex {
|
|
|
1645
1650
|
): QueryBuilder<TRecord, TResult>;
|
|
1646
1651
|
}
|
|
1647
1652
|
|
|
1648
|
-
interface PartitionBy<TRecord = any, TResult = unknown[]>
|
|
1653
|
+
interface PartitionBy<TRecord extends {} = any, TResult = unknown[]>
|
|
1649
1654
|
extends OrderBy<TRecord, TResult> {}
|
|
1650
1655
|
|
|
1651
|
-
interface Intersect<TRecord = any, TResult = unknown[]> {
|
|
1656
|
+
interface Intersect<TRecord extends {} = any, TResult = unknown[]> {
|
|
1652
1657
|
(
|
|
1653
1658
|
callback: MaybeArray<QueryCallback | QueryBuilder<TRecord> | Raw>,
|
|
1654
1659
|
wrap?: boolean
|
|
@@ -1658,10 +1663,10 @@ export declare namespace Knex {
|
|
|
1658
1663
|
): QueryBuilder<TRecord, TResult>;
|
|
1659
1664
|
}
|
|
1660
1665
|
|
|
1661
|
-
interface Union<TRecord = any, TResult = unknown[]>
|
|
1666
|
+
interface Union<TRecord extends {} = any, TResult = unknown[]>
|
|
1662
1667
|
extends Intersect<TRecord, TResult> {}
|
|
1663
1668
|
|
|
1664
|
-
interface Having<TRecord = any, TResult = unknown[]>
|
|
1669
|
+
interface Having<TRecord extends {} = any, TResult = unknown[]>
|
|
1665
1670
|
extends WhereWrapped<TRecord, TResult> {
|
|
1666
1671
|
<K extends keyof TRecord>(
|
|
1667
1672
|
column: K,
|
|
@@ -1681,7 +1686,7 @@ export declare namespace Knex {
|
|
|
1681
1686
|
>;
|
|
1682
1687
|
}
|
|
1683
1688
|
|
|
1684
|
-
interface HavingRange<TRecord = any, TResult = unknown[]> {
|
|
1689
|
+
interface HavingRange<TRecord extends {} = any, TResult = unknown[]> {
|
|
1685
1690
|
<K extends keyof TRecord>(
|
|
1686
1691
|
columnName: K,
|
|
1687
1692
|
values: readonly DbColumn<TRecord[K]>[]
|
|
@@ -1691,7 +1696,7 @@ export declare namespace Knex {
|
|
|
1691
1696
|
|
|
1692
1697
|
// commons
|
|
1693
1698
|
|
|
1694
|
-
interface ColumnNameQueryBuilder<TRecord = any, TResult = unknown[]> {
|
|
1699
|
+
interface ColumnNameQueryBuilder<TRecord extends {} = any, TResult = unknown[]> {
|
|
1695
1700
|
// When all columns are known to be keys of original record,
|
|
1696
1701
|
// we can extend our selection by these columns
|
|
1697
1702
|
(columnName: '*'): QueryBuilder<
|
|
@@ -1746,7 +1751,7 @@ export declare namespace Knex {
|
|
|
1746
1751
|
|
|
1747
1752
|
type RawBinding = Value | QueryBuilder;
|
|
1748
1753
|
|
|
1749
|
-
interface RawQueryBuilder<TRecord = any, TResult = unknown[]> {
|
|
1754
|
+
interface RawQueryBuilder<TRecord extends {} = any, TResult = unknown[]> {
|
|
1750
1755
|
<TResult2 = TResult>(
|
|
1751
1756
|
sql: string,
|
|
1752
1757
|
bindings?: readonly RawBinding[] | ValueDict | RawBinding
|
|
@@ -1834,12 +1839,12 @@ export declare namespace Knex {
|
|
|
1834
1839
|
// QueryBuilder
|
|
1835
1840
|
//
|
|
1836
1841
|
|
|
1837
|
-
type QueryCallback<TRecord = any, TResult = unknown[]> = (
|
|
1842
|
+
type QueryCallback<TRecord extends {} = any, TResult = unknown[]> = (
|
|
1838
1843
|
this: QueryBuilder<TRecord, TResult>,
|
|
1839
1844
|
builder: QueryBuilder<TRecord, TResult>
|
|
1840
1845
|
) => void;
|
|
1841
1846
|
|
|
1842
|
-
type QueryCallbackWithArgs<TRecord = any, TResult = unknown[]> = (
|
|
1847
|
+
type QueryCallbackWithArgs<TRecord extends {} = any, TResult = unknown[]> = (
|
|
1843
1848
|
this: QueryBuilder<TRecord, TResult>,
|
|
1844
1849
|
builder: QueryBuilder<TRecord, TResult>,
|
|
1845
1850
|
...args: any[]
|