What's Changed
Fixed regression with optional raw query fields
The last release, v0.14.0, included a regression with the handling of optional values for BigInt, Decimal & Json fields where an error would be raised if the value was None.
Massive thank you to @AstreaTSS for a very detailed bug report and contributing a fix!
Support for .create_many() for SQLite
The create_many() method is now supported in SQLite!
total = await client.user.create_many([{'name': 'Robert'}, {'name': 'Tegan'}])
# 2However the skip_duplicates argument is unfortunately not supported yet.
Massive thank you to @AdeelK93 for contributing this feature!
Support for connect_or_create
You can now connect or create a relational record through the .create() method, for example:
post = await client.post.create(
data={
'title': 'Post 1',
'published': True,
'author': {
'connect_or_create': {
'where': {
'id': user.id,
},
'create': {
'name': 'Robert',
},
},
},
},
include={
'author': True,
},
)Thanks to @AdeelK93 for contributing this feature!
Preview support for full text search
A new search parameter has been added for string field filters in PostgreSQL and MySQL. The syntax within the string is entirely dependent on the underlying database.
For example, in PostgreSQL, a filter for all posts where the title contains "cat" or "dog" would look like this:
posts = await client.post.find_many(
where={
'title': {
'search': 'cats | dogs',
},
}
)To use full text search you'll need to add it as a preview feature
generator client {
provider = "prisma-client-py"
previewFeatures = ["fullTextSearch"]
}See these docs for more details on full text search.
Massive thank you again(!) to @AdeelK93 for contirbuting this feature.