A type-safe typescript SQL query builder
MIT License
Bot releases are visible (Hide)
Published by koskimas about 2 years ago
Published by koskimas about 2 years ago
Published by koskimas about 2 years ago
withSchema
The internal "operation node tree" changed a little bit. This only affects you if you've implemented a custom plugin or are doing something funky with the node tree. The only change is the new node SchemableIdentifier
that's used by TableNode
and a small set of other nodes that can have a schema.
Published by koskimas about 2 years ago
WithSchemaPlugin
Published by koskimas about 2 years ago
CreateTableBuilder
. Thank you @igalklebanovPublished by koskimas about 2 years ago
Fixes a potential security issue #121. Thank you @DavesBorges ❤️
Published by koskimas over 2 years ago
Published by koskimas over 2 years ago
Added createType and dropType methods to the schema builder.
Published by koskimas over 2 years ago
Added modifyFront and modifyEnd methods
Published by koskimas over 2 years ago
Fix bug where falsy default values didn't set the hasDefaultValue
value to true in ColumnMetadata
.
Published by koskimas over 2 years ago
Fixes #108
Published by koskimas over 2 years ago
Added isAutoIncrementing
and hasDefaultValue
to ColumnMetadata
.
Published by koskimas over 2 years ago
Add support for lateral joins
const query = ctx.db
.selectFrom('person')
.innerJoinLateral(
(eb) =>
eb.selectFrom('pet')
.select('name')
.whereRef('pet.owner_id', '=', 'person.id')
.as('p'),
(join) => join.on(sql`true`)
)
.select(['first_name', 'p.name'])
.orderBy('first_name')
Published by koskimas over 2 years ago
Fix join method issues that caused typescript to fail with Type instantiation is excessively deep and possibly infinite.ts(2589)
-
Published by koskimas over 2 years ago
FileMigrationProvider
.mjs
files in migrationsPublished by koskimas over 2 years ago
Fixes #93
Published by koskimas over 2 years ago
Kysely now has absolutely no internal dependecies to anything. Not even dynamic ones. The same code runs on node, deno, browser and is compatible with all bundlers out of the box! All dependencies are passed from the outside.
The dialects now take an instance of the underlying db drivers's pool (or other connection object if a pool is not available). This is how you'd create an instance of Kysely
in 0.19.0:
import { Pool } from 'pg'
const db = new Kysely<Database>({
dialect: new PostgresDialect({
pool: new Pool({
host: 'localhost',
database: 'kysely_test'
})
})
})
import { createPool } from 'mysql2'
const db = new Kysely<Database>({
dialect: new MysqlDialect({
pool: createPool({
host: 'localhost',
database: 'kysely_test'
})
})
})
import Database from 'better-sqlite3'
const db = new Kysely<Database>({
dialect: new SqliteDialect({
database: new Database('db.sqlite')
})
})
If you want to initialize the pool lazily when it's used for the first time, you can use a thunk:
import { Pool } from 'pg'
const db = new Kysely<Database>({
dialect: new PostgresDialect({
pool: async () => new Pool({
host: 'localhost',
database: 'kysely_test'
})
})
})
I also changed the FileMigrationProvider
once again, even though I promised never to do that again 😞. This was done to get rid of all dependencies. You now need to use the class like this:
import { promises as fs } from 'fs'
import path from 'path'
new FileMigrationProvider({
fs,
path,
migrationFolder: 'path/to/migrations/folder',
})
There's no more need for the index-nodeless
file and it has been removed. You can simply import kysely
or the index.ts
file from the dist
folder. Nothing refers to node or any node library.
Published by koskimas over 2 years ago
MysqlDialect
and PostgresDialect
#81Published by koskimas over 2 years ago
UpdateQueryBuilder
now takes four type arguments instead of three. The second argument is new and is the table that will be updated. The third one is a union of all the tables that can be referred to.
This only affects you if you've been using explicit types.
UpdateQueryBuilder
as
method of a raw sql snippet.