kysely 0.3.8 → 0.3.9
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/.prettierignore +1 -0
- package/README.md +6 -0
- package/dist/cjs/dialect/postgres/postgres-driver.js +1 -0
- package/dist/cjs/driver/driver-config.d.ts +6 -0
- package/dist/cjs/parser/select-parser.d.ts +2 -2
- package/dist/cjs/parser/table-parser.d.ts +2 -2
- package/dist/cjs/query-builder/query-builder.d.ts +143 -76
- package/dist/cjs/query-builder/query-builder.js +12 -7
- package/dist/cjs/query-builder/type-utils.d.ts +14 -5
- package/dist/esm/dialect/postgres/postgres-driver.js +1 -0
- package/dist/esm/driver/driver-config.d.ts +6 -0
- package/dist/esm/parser/select-parser.d.ts +2 -2
- package/dist/esm/parser/table-parser.d.ts +2 -2
- package/dist/esm/query-builder/query-builder.d.ts +143 -76
- package/dist/esm/query-builder/query-builder.js +12 -7
- package/dist/esm/query-builder/type-utils.d.ts +14 -5
- package/package.json +2 -2
|
@@ -75,7 +75,8 @@ class QueryBuilder {
|
|
|
75
75
|
* Usage in a subquery:
|
|
76
76
|
*
|
|
77
77
|
* ```ts
|
|
78
|
-
* db
|
|
78
|
+
* const persons = await db
|
|
79
|
+
* .selectFrom('person')
|
|
79
80
|
* .selectAll('person')
|
|
80
81
|
* .select((qb) => qb
|
|
81
82
|
* .subQuery('pet')
|
|
@@ -84,6 +85,7 @@ class QueryBuilder {
|
|
|
84
85
|
* .limit(1)
|
|
85
86
|
* .as('pet_name')
|
|
86
87
|
* )
|
|
88
|
+
* .execute()
|
|
87
89
|
* ```
|
|
88
90
|
*
|
|
89
91
|
* The generated SQL (postgresql):
|
|
@@ -93,8 +95,9 @@ class QueryBuilder {
|
|
|
93
95
|
* select "name"
|
|
94
96
|
* from "pet"
|
|
95
97
|
* where "pet"."owner_id" = "person"."id"
|
|
96
|
-
*
|
|
97
|
-
*
|
|
98
|
+
* limit $1
|
|
99
|
+
* ) as "pet_name"
|
|
100
|
+
* from "person"
|
|
98
101
|
*/
|
|
99
102
|
whereRef(lhs, op, rhs) {
|
|
100
103
|
ensureCanHaveWhereClause(this.#queryNode);
|
|
@@ -132,7 +135,8 @@ class QueryBuilder {
|
|
|
132
135
|
* The query below selets all persons that own a pet named Catto:
|
|
133
136
|
*
|
|
134
137
|
* ```ts
|
|
135
|
-
* db
|
|
138
|
+
* const persons = await db
|
|
139
|
+
* .selectFrom('person')
|
|
136
140
|
* .selectAll()
|
|
137
141
|
* .whereExists((qb) => qb
|
|
138
142
|
* .subQuery('pet')
|
|
@@ -140,6 +144,7 @@ class QueryBuilder {
|
|
|
140
144
|
* .whereRef('person.id', '=', 'pet.owner_id')
|
|
141
145
|
* .where('pet.name', '=', 'Catto')
|
|
142
146
|
* )
|
|
147
|
+
* .execute()
|
|
143
148
|
* ```
|
|
144
149
|
*
|
|
145
150
|
* The generated SQL (postgresql):
|
|
@@ -452,7 +457,7 @@ class QueryBuilder {
|
|
|
452
457
|
});
|
|
453
458
|
}
|
|
454
459
|
/**
|
|
455
|
-
* Sets the values to update for an
|
|
460
|
+
* Sets the values to update for an {@link Kysely.updateTable | update} query.
|
|
456
461
|
*
|
|
457
462
|
* This method takes an object whose keys are column names and values are
|
|
458
463
|
* values to update. In addition to the column's type, the values can be `raw`
|
|
@@ -483,7 +488,7 @@ class QueryBuilder {
|
|
|
483
488
|
* ```
|
|
484
489
|
*
|
|
485
490
|
* @example
|
|
486
|
-
* On postgresql you
|
|
491
|
+
* On postgresql you ca chain `returning` to the query to get
|
|
487
492
|
* the updated rows' columns (or any other expression) as the
|
|
488
493
|
* return value:
|
|
489
494
|
*
|
|
@@ -496,7 +501,7 @@ class QueryBuilder {
|
|
|
496
501
|
* })
|
|
497
502
|
* .where('id', '=', 1)
|
|
498
503
|
* .returning('id')
|
|
499
|
-
* .
|
|
504
|
+
* .executeTakeFirstOrThrow()
|
|
500
505
|
*
|
|
501
506
|
* row.id
|
|
502
507
|
* ```
|
|
@@ -40,7 +40,7 @@ export declare type RowType<DB, TB extends keyof DB> = UnionToIntersection<DB[TB
|
|
|
40
40
|
*/
|
|
41
41
|
export declare type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
|
|
42
42
|
/**
|
|
43
|
-
* Given a database type and a union of table
|
|
43
|
+
* Given a database type and a union of table names in that db, returns
|
|
44
44
|
* a union type with all possible column names.
|
|
45
45
|
*
|
|
46
46
|
* Example:
|
|
@@ -74,7 +74,7 @@ export declare type AnyColumn<DB, TB extends keyof DB> = {
|
|
|
74
74
|
[T in TB]: keyof DB[T];
|
|
75
75
|
}[TB];
|
|
76
76
|
/**
|
|
77
|
-
* Given a database type and a union of table names in that db returns
|
|
77
|
+
* Given a database type and a union of table names in that db, returns
|
|
78
78
|
* a union type with all possible `table`.`column` combinations.
|
|
79
79
|
*
|
|
80
80
|
* Example:
|
|
@@ -107,21 +107,30 @@ export declare type AnyColumn<DB, TB extends keyof DB> = {
|
|
|
107
107
|
export declare type AnyColumnWithTable<DB, TB extends keyof DB> = {
|
|
108
108
|
[T in TB]: T extends string ? keyof DB[T] extends string ? `${T}.${keyof DB[T]}` : never : never;
|
|
109
109
|
}[TB];
|
|
110
|
+
/**
|
|
111
|
+
* Just like {@link AnyColumn} but with a ` as <string>` suffix.
|
|
112
|
+
*/
|
|
110
113
|
export declare type AnyAliasedColumn<DB, TB extends keyof DB> = {
|
|
111
114
|
[T in TB]: T extends string ? keyof DB[T] extends string ? `${keyof DB[T]} as ${string}` : never : never;
|
|
112
115
|
}[TB];
|
|
113
|
-
export declare type AnyAliasedColumnWithTable<DB, TB extends keyof DB> = `${AnyColumnWithTable<DB, TB>} as ${string}`;
|
|
114
116
|
/**
|
|
115
|
-
*
|
|
117
|
+
* Just like {@link AnyColumnWithTable} but with a ` as <string>` suffix.
|
|
118
|
+
*/
|
|
119
|
+
export declare type AnyAliasedColumnWithTable<DB, TB extends keyof DB> = {
|
|
120
|
+
[T in TB]: T extends string ? keyof DB[T] extends string ? `${T}.${keyof DB[T]} as ${string}` : never : never;
|
|
121
|
+
}[TB];
|
|
122
|
+
/**
|
|
123
|
+
* Extracts the item type of an array.
|
|
116
124
|
*/
|
|
117
125
|
export declare type ArrayItemType<T> = T extends ReadonlyArray<infer I> ? I : never;
|
|
118
126
|
export declare type AnyQueryBuilder = QueryBuilder<any, any, any>;
|
|
119
127
|
export declare type AnyAliasedQueryBuilder = AliasedQueryBuilder<any, any, any, any>;
|
|
120
128
|
export declare type AnyRawBuilder = RawBuilder<any>;
|
|
129
|
+
export declare type AnyAliasedRawBuilder = AliasedRawBuilder<any, any>;
|
|
121
130
|
export declare type QueryBuilderFactory<DB, TB extends keyof DB> = (qb: SubQueryBuilder<DB, TB>) => QueryBuilder<any, any, any>;
|
|
122
131
|
export declare type AliasedQueryBuilderFactory<DB, TB extends keyof DB> = (qb: SubQueryBuilder<DB, TB>) => AnyAliasedQueryBuilder;
|
|
123
132
|
export declare type RawBuilderFactory<DB, TB extends keyof DB> = (qb: SubQueryBuilder<DB, TB>) => AnyRawBuilder;
|
|
124
|
-
export declare type AliasedRawBuilderFactory<DB, TB extends keyof DB> = (qb: SubQueryBuilder<DB, TB>) =>
|
|
133
|
+
export declare type AliasedRawBuilderFactory<DB, TB extends keyof DB> = (qb: SubQueryBuilder<DB, TB>) => AnyAliasedRawBuilder;
|
|
125
134
|
export interface InsertResultTypeTag {
|
|
126
135
|
/** @internal */
|
|
127
136
|
__isInsertResultTypeTag__: true;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { SecureContextOptions } from 'tls';
|
|
1
3
|
import { DatabaseConnection } from './database-connection.js';
|
|
2
4
|
export interface DriverConfig {
|
|
3
5
|
/**
|
|
@@ -24,6 +26,10 @@ export interface DriverConfig {
|
|
|
24
26
|
* Connection pooling config.
|
|
25
27
|
*/
|
|
26
28
|
pool?: PoolConfig;
|
|
29
|
+
/**
|
|
30
|
+
* Optional SSL configuration.
|
|
31
|
+
*/
|
|
32
|
+
ssl?: SecureContextOptions;
|
|
27
33
|
}
|
|
28
34
|
export interface PoolConfig {
|
|
29
35
|
/**
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { AliasedRawBuilder } from '../raw-builder/raw-builder.js';
|
|
2
2
|
import { AliasedQueryBuilder, QueryBuilder } from '../query-builder/query-builder.js';
|
|
3
3
|
import { SelectionNode } from '../operation-node/selection-node.js';
|
|
4
|
-
import { AliasedQueryBuilderFactory, AliasedRawBuilderFactory, AnyAliasedColumn, AnyAliasedColumnWithTable, AnyAliasedQueryBuilder, AnyColumn, AnyColumnWithTable, InsertResultTypeTag, RowType, ValueType } from '../query-builder/type-utils.js';
|
|
4
|
+
import { AliasedQueryBuilderFactory, AliasedRawBuilderFactory, AnyAliasedColumn, AnyAliasedColumnWithTable, AnyAliasedQueryBuilder, AnyAliasedRawBuilder, AnyColumn, AnyColumnWithTable, InsertResultTypeTag, RowType, ValueType } from '../query-builder/type-utils.js';
|
|
5
5
|
import { DynamicReferenceBuilder } from '../dynamic/dynamic-reference-builder.js';
|
|
6
6
|
/**
|
|
7
7
|
* A selection expression.
|
|
8
8
|
*/
|
|
9
|
-
export declare type SelectExpression<DB, TB extends keyof DB> = AnyAliasedColumnWithTable<DB, TB> | AnyAliasedColumn<DB, TB> | AnyColumnWithTable<DB, TB> | AnyColumn<DB, TB> |
|
|
9
|
+
export declare type SelectExpression<DB, TB extends keyof DB> = AnyAliasedColumnWithTable<DB, TB> | AnyAliasedColumn<DB, TB> | AnyColumnWithTable<DB, TB> | AnyColumn<DB, TB> | AnyAliasedRawBuilder | AliasedRawBuilderFactory<DB, TB> | AnyAliasedQueryBuilder | AliasedQueryBuilderFactory<DB, TB> | DynamicReferenceBuilder<any>;
|
|
10
10
|
export declare type SelectExpressionOrList<DB, TB extends keyof DB> = SelectExpression<DB, TB> | ReadonlyArray<SelectExpression<DB, TB>>;
|
|
11
11
|
/**
|
|
12
12
|
* Given a selection expression returns a query builder type that
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { AliasedQueryBuilder, QueryBuilder } from '../query-builder/query-builder.js';
|
|
2
2
|
import { TableNode } from '../operation-node/table-node.js';
|
|
3
|
-
import { AliasedQueryBuilderFactory, AnyAliasedQueryBuilder } from '../query-builder/type-utils.js';
|
|
3
|
+
import { AliasedQueryBuilderFactory, AnyAliasedQueryBuilder, AnyAliasedRawBuilder } from '../query-builder/type-utils.js';
|
|
4
4
|
import { AliasedRawBuilder } from '../raw-builder/raw-builder.js';
|
|
5
5
|
import { TableExpressionNode } from '../operation-node/operation-node-utils.js';
|
|
6
6
|
export declare type TableExpression<DB, TB extends keyof DB> = TableReference<DB> | AnyAliasedQueryBuilder | AliasedQueryBuilderFactory<DB, TB>;
|
|
7
|
-
export declare type TableReference<DB> = AnyAliasedTable<DB, any, any> | AnyTable<DB> |
|
|
7
|
+
export declare type TableReference<DB> = AnyAliasedTable<DB, any, any> | AnyTable<DB> | AnyAliasedRawBuilder;
|
|
8
8
|
export declare type QueryBuilderWithTable<DB, TB extends keyof DB, O, TE> = QueryBuilder<TableExpressionDatabaseType<DB, TE>, TB | ExtractAliasFromTableExpression<DB, TE>, O>;
|
|
9
9
|
export declare type TableExpressionDatabaseType<DB, TE> = DB extends ExtractDatabaseTypeFromTableExpression<DB, TE> ? DB : DB & ExtractDatabaseTypeFromTableExpression<DB, TE>;
|
|
10
10
|
export declare type ExtractAliasFromTableExpression<DB, TE> = TE extends `${string} as ${infer TA}` ? TA : TE extends keyof DB ? TE : TE extends AliasedQueryBuilder<any, any, any, infer QA> ? QA : TE extends (qb: any) => AliasedQueryBuilder<any, any, any, infer QA> ? QA : TE extends (qb: any) => AliasedRawBuilder<any, infer RA> ? RA : never;
|