kysely 0.19.6 → 0.19.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/README.md +11 -6
- package/dist/cjs/dialect/sqlite/sqlite-introspector.js +1 -1
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +5 -2
- package/dist/cjs/operation-node/operation-node-transformer.js +134 -122
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -0
- package/dist/cjs/operation-node/operation-node-visitor.js +1 -0
- package/dist/cjs/operation-node/operation-node.d.ts +1 -1
- package/dist/cjs/operation-node/select-modifier-node.d.ts +16 -0
- package/dist/cjs/operation-node/select-modifier-node.js +24 -0
- package/dist/cjs/operation-node/select-query-node.d.ts +5 -5
- package/dist/cjs/operation-node/select-query-node.js +11 -9
- package/dist/cjs/query-builder/select-query-builder.d.ts +50 -6
- package/dist/cjs/query-builder/select-query-builder.js +68 -13
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +2 -0
- package/dist/cjs/query-compiler/default-query-compiler.js +14 -7
- package/dist/cjs/util/require-all-props.d.ts +43 -0
- package/dist/cjs/util/require-all-props.js +40 -0
- package/dist/esm/dialect/sqlite/sqlite-introspector.js +1 -1
- package/dist/esm/operation-node/operation-node-transformer.d.ts +5 -2
- package/dist/esm/operation-node/operation-node-transformer.js +134 -122
- package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -0
- package/dist/esm/operation-node/operation-node-visitor.js +1 -0
- package/dist/esm/operation-node/operation-node.d.ts +1 -1
- package/dist/esm/operation-node/select-modifier-node.d.ts +16 -0
- package/dist/esm/operation-node/select-modifier-node.js +22 -0
- package/dist/esm/operation-node/select-query-node.d.ts +5 -5
- package/dist/esm/operation-node/select-query-node.js +11 -9
- package/dist/esm/query-builder/select-query-builder.d.ts +50 -6
- package/dist/esm/query-builder/select-query-builder.js +68 -13
- package/dist/esm/query-compiler/default-query-compiler.d.ts +2 -0
- package/dist/esm/query-compiler/default-query-compiler.js +14 -7
- package/dist/esm/util/require-all-props.d.ts +43 -0
- package/dist/esm/util/require-all-props.js +37 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -5,21 +5,20 @@
|
|
|
5
5
|
|
|
6
6
|
# [Kysely](https://koskimas.github.io/kysely/index.html)
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
Mainly developed for [node.js](https://nodejs.org/en/) but also runs on [deno](https://deno.land/)
|
|
10
|
-
in the browser.
|
|
8
|
+
Kysely (pronounce “Key-Seh-Lee”) is a type-safe and autocompletion-friendly typescript SQL query builder. Inspired by
|
|
9
|
+
[knex](http://knexjs.org/). Mainly developed for [node.js](https://nodejs.org/en/) but also runs on [deno](https://deno.land/)
|
|
10
|
+
and in the browser.
|
|
11
11
|
|
|
12
12
|

|
|
13
13
|
|
|
14
14
|
Kysely makes sure you only refer to tables and columns that are visible to the part of the query
|
|
15
|
-
you
|
|
15
|
+
you're writing. The result type only has the selected columns with correct types and aliases. As an
|
|
16
16
|
added bonus you get autocompletion for all that stuff.
|
|
17
17
|
|
|
18
18
|
As you can see in the gif above, through the pure magic of modern typescript, Kysely is even able to parse
|
|
19
19
|
the alias given to `pet.name` and add the `pet_name` column to the result row type. Kysely is able to infer
|
|
20
20
|
column names, aliases and types from selected subqueries, joined subqueries, `with` statements and pretty
|
|
21
|
-
much anything you can think of.
|
|
22
|
-
you build a valid query.
|
|
21
|
+
much anything you can think of.
|
|
23
22
|
|
|
24
23
|
Of course there are cases where things cannot be typed at compile time, and Kysely offers escape
|
|
25
24
|
hatches for these situations. See the [sql template tag](https://koskimas.github.io/kysely/modules.html#sql)
|
|
@@ -34,6 +33,7 @@ You can find a more thorough introduction [here](https://www.jakso.me/blog/kysel
|
|
|
34
33
|
|
|
35
34
|
- [Installation](#installation)
|
|
36
35
|
- [Minimal example](#minimal-example)
|
|
36
|
+
- [Generating types](#generating-types)
|
|
37
37
|
- [Query examples](#query-examples)
|
|
38
38
|
- [Recipes](https://github.com/koskimas/kysely/tree/master/recipes)
|
|
39
39
|
- [Migrations](#migrations)
|
|
@@ -166,6 +166,11 @@ type InsertablePerson = Insertable<PersonTable>
|
|
|
166
166
|
type UpdateablePerson = Updateable<PersonTable>
|
|
167
167
|
```
|
|
168
168
|
|
|
169
|
+
# Generating types
|
|
170
|
+
|
|
171
|
+
If you want to generate the table types automatically from the database schema please
|
|
172
|
+
check out [this awesome project](https://github.com/RobinBlomberg/kysely-codegen).
|
|
173
|
+
|
|
169
174
|
# Query examples
|
|
170
175
|
|
|
171
176
|
## Select queries
|
|
@@ -65,6 +65,7 @@ import { GeneratedNode } from './generated-node.js';
|
|
|
65
65
|
import { DefaultValueNode } from './default-value-node.js';
|
|
66
66
|
import { OnNode } from './on-node.js';
|
|
67
67
|
import { ValuesNode } from './values-node.js';
|
|
68
|
+
import { SelectModifierNode } from './select-modifier-node.js';
|
|
68
69
|
/**
|
|
69
70
|
* Transforms an operation node tree into another one.
|
|
70
71
|
*
|
|
@@ -97,8 +98,9 @@ import { ValuesNode } from './values-node.js';
|
|
|
97
98
|
export declare class OperationNodeTransformer {
|
|
98
99
|
#private;
|
|
99
100
|
protected readonly nodeStack: OperationNode[];
|
|
100
|
-
readonly transformNode: <T extends OperationNode | undefined>(node:
|
|
101
|
-
protected transformNodeList<T extends OperationNode>(list: readonly
|
|
101
|
+
readonly transformNode: <T extends OperationNode | undefined, U extends T | undefined = T>(node: U) => T;
|
|
102
|
+
protected transformNodeList<T extends OperationNode, U extends T = T>(list: readonly U[]): readonly T[];
|
|
103
|
+
protected transformNodeList<T extends OperationNode, U extends T = T>(list: readonly U[] | undefined): readonly T[] | undefined;
|
|
102
104
|
protected transformSelectQuery(node: SelectQueryNode): SelectQueryNode;
|
|
103
105
|
protected transformSelection(node: SelectionNode): SelectionNode;
|
|
104
106
|
protected transformColumn(node: ColumnNode): ColumnNode;
|
|
@@ -159,6 +161,7 @@ export declare class OperationNodeTransformer {
|
|
|
159
161
|
protected transformGenerated(node: GeneratedNode): GeneratedNode;
|
|
160
162
|
protected transformDefaultValue(node: DefaultValueNode): DefaultValueNode;
|
|
161
163
|
protected transformOn(node: OnNode): OnNode;
|
|
164
|
+
protected transformSelectModifier(node: SelectModifierNode): SelectModifierNode;
|
|
162
165
|
protected transformDataType(node: DataTypeNode): DataTypeNode;
|
|
163
166
|
protected transformSelectAll(node: SelectAllNode): SelectAllNode;
|
|
164
167
|
protected transformIdentifier(node: IdentifierNode): IdentifierNode;
|