-
-
Notifications
You must be signed in to change notification settings - Fork 688
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1182 from drizzle-team/beta
0.28.6 Release
- Loading branch information
Showing
19 changed files
with
975 additions
and
59 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,140 @@ | ||
## Changes | ||
|
||
> **Note**: | ||
> MySQL `datetime` with `mode: 'date'` will now store dates in UTC strings and retrieve data in UTC as well to align with MySQL behavior for `datetime`. If you need a different behavior and want to handle `datetime` mapping in a different way, please use `mode: 'string'` or [Custom Types](https://orm.drizzle.team/docs/custom-types) implementation | ||
Check [Fix Datetime mapping for MySQL](https://github.com/drizzle-team/drizzle-orm/pull/1082) for implementation details | ||
|
||
## New Features | ||
|
||
### 🎉 `LibSQL` batch api support | ||
|
||
Reference: https://docs.turso.tech/reference/client-access/javascript-typescript-sdk#execute-a-batch-of-statements | ||
|
||
Batch API usage example: | ||
|
||
```ts | ||
const batchResponse = await db.batch([ | ||
db.insert(usersTable).values({ id: 1, name: 'John' }).returning({ | ||
id: usersTable.id, | ||
}), | ||
db.update(usersTable).set({ name: 'Dan' }).where(eq(usersTable.id, 1)), | ||
db.query.usersTable.findMany({}), | ||
db.select().from(usersTable).where(eq(usersTable.id, 1)), | ||
db.select({ id: usersTable.id, invitedBy: usersTable.invitedBy }).from( | ||
usersTable, | ||
), | ||
]); | ||
``` | ||
|
||
Type for `batchResponse` in this example would be: | ||
|
||
```ts | ||
type BatchResponse = [ | ||
{ | ||
id: number; | ||
}[], | ||
ResultSet, | ||
{ | ||
id: number; | ||
name: string; | ||
verified: number; | ||
invitedBy: number | null; | ||
}[], | ||
{ | ||
id: number; | ||
name: string; | ||
verified: number; | ||
invitedBy: number | null; | ||
}[], | ||
{ | ||
id: number; | ||
invitedBy: number | null; | ||
}[], | ||
]; | ||
``` | ||
|
||
All possible builders that can be used inside `db.batch`: | ||
|
||
```ts | ||
`db.all()`, | ||
`db.get()`, | ||
`db.values()`, | ||
`db.run()`, | ||
`db.query.<table>.findMany()`, | ||
`db.query.<table>.findFirst()`, | ||
`db.select()...`, | ||
`db.update()...`, | ||
`db.delete()...`, | ||
`db.insert()...`, | ||
``` | ||
|
||
More usage examples here: [integration-tests/tests/libsql-batch.test.ts](https://github.com/drizzle-team/drizzle-orm/pull/1161/files#diff-17253895532e520545027dd48dcdbac2d69a5a49d594974e6d55d7502f89b838R248) and in [docs](https://orm.drizzle.team/docs/batch-api) | ||
|
||
### 🎉 Add json mode for text in SQLite | ||
|
||
Example | ||
|
||
```ts | ||
const test = sqliteTable('test', { | ||
dataTyped: text('data_typed', { mode: 'json' }).$type<{ a: 1 }>().notNull(), | ||
}); | ||
``` | ||
|
||
### 🎉 Add `.toSQL()` to Relational Query API calls | ||
|
||
Example | ||
|
||
```ts | ||
const query = db.query.usersTable.findFirst().toSQL(); | ||
``` | ||
|
||
### 🎉 Added new PostgreSQL operators for Arrays - thanks @L-Mario564 | ||
|
||
List of operators and usage examples | ||
`arrayContains`, `arrayContained`, `arrayOverlaps` | ||
|
||
```ts | ||
const contains = await db.select({ id: posts.id }).from(posts) | ||
.where(arrayContains(posts.tags, ['Typescript', 'ORM'])); | ||
|
||
const contained = await db.select({ id: posts.id }).from(posts) | ||
.where(arrayContained(posts.tags, ['Typescript', 'ORM'])); | ||
|
||
const overlaps = await db.select({ id: posts.id }).from(posts) | ||
.where(arrayOverlaps(posts.tags, ['Typescript', 'ORM'])); | ||
|
||
const withSubQuery = await db.select({ id: posts.id }).from(posts) | ||
.where(arrayContains( | ||
posts.tags, | ||
db.select({ tags: posts.tags }).from(posts).where(eq(posts.id, 1)), | ||
)); | ||
``` | ||
|
||
### 🎉 Add more SQL operators for where filter function in Relational Queries - thanks @cayter! | ||
|
||
**Before** | ||
|
||
```ts | ||
import { inArray } from "drizzle-orm/pg-core"; | ||
|
||
await db.users.findFirst({ | ||
where: (table, _) => inArray(table.id, [ ... ]) | ||
}) | ||
``` | ||
|
||
**After** | ||
|
||
```ts | ||
await db.users.findFirst({ | ||
where: (table, { inArray }) => inArray(table.id, [ ... ]) | ||
}) | ||
``` | ||
|
||
## Bug Fixes | ||
|
||
- 🐛 [Correct where in on conflict in sqlite](https://github.com/drizzle-team/drizzle-orm/pull/1076) - Thanks @hanssonduck! | ||
- 🐛 [Fix libsql/client type import](https://github.com/drizzle-team/drizzle-orm/pull/1122) - Thanks @luisfvieirasilva! | ||
- 🐛 [Fix: raw sql query not being mapped properly on RDS](https://github.com/drizzle-team/drizzle-orm/pull/1071) - Thanks @boian-ivanov | ||
- 🐛 [Fix Datetime mapping for MySQL](https://github.com/drizzle-team/drizzle-orm/pull/1082) - thanks @Angelelz | ||
- 🐛 [Fix smallserial generating as serial](https://github.com/drizzle-team/drizzle-orm/pull/1127) - thanks @L-Mario564 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.