So many fixes and features in this one. @igalklebanov has been on fire 🔥. Almost all of these are his awesome work.
- Fix bug that prevented
ArrayBuffer
usage withCamelCasePlugin
#193. Thank you @igalklebanov ❤️ - Add
fn.coalesce
helper #179. Thank you @igalklebanov ❤️ - Refactor internals to use the new Expression interface
- Allow aggregate functions to return a nullable value #183. Thank you @igalklebanov ❤️
- Fix bug with multiple default values in inserts #202. Thank you @igalklebanov ❤️
- Support the
exactOptionalPropertyTypes
typescript setting #210. Thank you @igalklebanov ❤️ - Fix migrationKey calculation keeping dot when .mjs #220. Thank you @igalklebanov ❤️
- Allow subqueries and raw
sql
in distinctOn #239. Thank you @naorpeled ❤️ - Support multiple column operation in
alter table
query #238. Thank you @naorpeled ❤️ - Add numInsertedOrUpdatedRows to InsertResult #188. Thank you @igalklebanov ❤️
- Fix #235. Thank you @tobiasfoerg ❤️
- Add
call
method to create/alter table statement builders #242. Thank you @jacobpgn ❤️ - Add filter clause support at AggregateFunctionBuilder #208. Thank you @igalklebanov ❤️
Breaking changes
- The types are now more strict in some places. If you are using raw
sql
expressions or theRawBuilder
class, you may need to specify a type for the expression like this:
sql<string>`something`
- Following the changes in #238, you can alter multiple columns, and the alterations have moved to a callback:
Before:
await db.schema
.alterTable('person')
.alterColumn('first_name')
.setDataType('text')
.execute();
After:
await db.schema
.alterTable('person')
.alterColumn('first_name', (ac) => ac.setDataType('text'))
.execute()