Skip to content

0.30.0-beta.0

Pre-release
Pre-release

Choose a tag to compare

@igalklebanov igalklebanov released this 25 Jul 12:45
Immutable release. Only release title and notes can be modified.
14e9835

Hey πŸ‘‹

0.30 season is upon us. pnpm i kysely@next and get a sneak peak into the future!

We've got a new transactionMode: 'per-run' | 'per-migration' | 'none' property you can pass to Migrator or it's methods.

  • 'per-run' is the classic behavior you're used to where kysely wrap the entire run in a transaction when your dialect supports transactional DDL.
  • 'per-migration' enables each migration to pick whether it runs in its own transaction or not. Just expose config: { transaction: false } from the module, right next to the up/down functions.
  • 'none' means no transactions are used, which is similar to the now deprecated disableTransactions: true.
import * as fs from 'node:fs/promises'
import * as path from 'node:path'
import { FileMigrationProvider, Migrator } from 'kysely/migration'

const migrator = new Migrator({
  db,
  provider: new FileMigrationProvider({
    fs,
    migrationFolder: path.join(import.meta.dirname, 'migrations'),
  }),
  transactionMode: 'per-migration', // <-------------------------------
})

await migrator.migrateToLatest()

We've got a new defineMigration helper function that you can use to easily write your migrations and meet the contract requirements:

import { defineMigration } from 'kysely/migration'

export default defineMigration({
  up: async (db) => {
    // ...
  },

  config: { transaction: false }, // <--------------------
})

πŸš€ Features

PostgreSQL 🐘 / MSSQL πŸ₯…

SQLite πŸ“˜

🐞 Bugfixes

πŸ“– Documentation

πŸ“¦ CICD & Tooling

⚠️ Breaking Changes

  • disableTransactions is deprecated. Use the new transactionMode: 'none', or transactionMode: 'per-migration' with combination of config: { transaction: false }.

SQLite πŸ“˜

  • Trying to pass records with BLOB columns in JSON helpers emits compile-time errors - e.g.
     KyselyTypeError<'SQLite does not support passing `BLOB` values to `json_object`. Cast to `TEXT`.'>

🐀 New Contributors

What's Changed

Full Changelog: 4ba0bd4...v0.30.0-beta.0