Drift is an easy to use, reactive, typesafe persistence library for Dart & Flutter.
MIT License
Published by simolus3 almost 2 years ago
This drift release extends support for existing row classes to queries, allows storing enums by their name and handles ANY
columns. A full list of improvements and new features:
textEnum()
column in Dart or the ENUMNAME
column type in .drift
files.DriftAny
type to handle arbitrary SQL values. It will be used by the generator for columns types declared as ANY
in strict tables.drift_dev schema dump
can now dump the schema of existing sqlite3 database files as well.case_from_dart_to_sql
option with the possible values: preserve
, camelCase
, CONSTANT_CASE
, snake_case
, PascalCase
, lowercase
and UPPERCASE
(default: snake_case
).updates
parameter to Batch.customStatement
- it can be used to specify which tables are affected by the custom statement.likeExp
to generate LIKE
expressions with any comparison expression.UNIQUE
keys declared in drift files being written twice.TypedResult.read
, increasing performance for joins with lots of tables or columns.Migrator.alterTable
not to work if a view references the altered table.customConstraint
s are now parsed and respected by the generator.This drift release also adds experimental support for record types as existing types for tables or queries. Note that records are experimental in the Dart language, so the feature may be updated or removed depending on its development in the language.
Published by simolus3 almost 2 years ago
JsonTypeConverter2
mixin. It behaves similar to the existing json type converters, but can use a different SQL and JSON type.isInValues
and isNotInValues
methods to columns with type converters. They can be used to compare the column against a list of Dart expressions that will be mapped through a type converter.TableStatements.insertAll
to atomically insert multiple rows.singleClientMode
to remote()
and DriftIsolate
connections to make the common case with one client more efficient.NativeDatabase.createInBackground
as a drop-in replacement for NativeDatabase()
. It creates a drift isolate behind the scenes, avoiding all of the boilerplate usually involved with drift isolates.Published by simolus3 about 2 years ago
operator ~
, bitwiseAnd
and bitwiseOr
.uniqueKeys
overrides into a database schema, allowing them to be properly tested in schema tests.analyzer
package.Published by simolus3 about 2 years ago
Changes in drift
version 2.1.0
:
watchSingle()
with a stream emitting a non-singleton list at some point.OrderingTerm.nulls
to control the NULLS FIRST
or NULLS LAST
clause in Dart.Changes in drift_dev
version 2.1.0
and sqlparser
version 0.23.2
:
fts5
tables with external content tables.rtree
module.Published by simolus3 about 2 years ago
This patch release fixes some issues introduced by the upgrade to drift 2.0:
QueryRow.read
only returning non-nullable values now - it was causing issues with type inference in some cases.scoped_dart_components
, making it easier to re-use them in your own methods.@
or $
variables instead of crashing.Published by simolus3 about 2 years ago
The first major update to the drift
packages contains a number of breaking changes and removes some obsolete features. This includes:
toSql
and fromSql
.SqlTypeSystem
and subtypes of SqlType
:
DriftSqlType
enumSqlTypes
, reachable via database.options.types
.Expression
s (including Column
s) always have a non-nullable type parameter now. They are implicitly nullable, so TypedResult.read
now returns a nullable value.QueryRow.read
can only read non-nullable values now. To read nullable values, use readNullable
.includeJoinedTableColumns
parameter on selectOnly()
. The method now behaves as if that parameter was turned off. To use columns from a joined table, add them with addColumns
.fromData
factory on generated data classes. Use the map
method on tables instead.BEGIN
or COMMIT
across database implementations.writeReturning
to update statements; deleteReturning
and goAndReturn
to delete statatements.💡: More information on how to migrate is available in the documentation.
Published by simolus3 about 2 years ago
This small update to drift_dev
supports the latest version of the analyzer_plugin
package and removes usages of deprecated analyzer
APIs.
Published by simolus3 over 2 years ago
This minor release fixes a bug where the NativedDatabase
implementation would not dispose statements if running them threw an exception (https://github.com/simolus3/drift/issues/1917).
Published by simolus3 over 2 years ago
This drift release brings the following new features and improvements:
int64()
column builder to store large integers. These integers are still stored as 64-bit ints in the database, but represented as a BigInt
in Dart. This enables better web support for integers larger than 2⁵². More details are in the documentation.filter
and distinct
support to groupConcat
.sqflite
-based implementation if the first operation in a transaction
is a future backed by a query stream.analyzer
packageThis release also uses version 0.22.0 of the sqlparser
package with the following changes:
DISTINCT
misuse in aggregate function calls.RIGHT
and FULL
joins, IS (NOT) DISTINCT FROM
expressions)SUM()
calls around int "subtypes" like booleans.Published by simolus3 over 2 years ago
unique()
method to columns and the uniqueKeys
override to define unique constraints in Dart tables.check()
method to the Dart column builder to generate CHECK
column constraints.JsonTypeConverter
.package:drift/wasm.dart
library. It uses WebAssembly to access sqlite3 without any external JavaScript libraries, but requires you to add a WebAssembly module to the web/
folder.package:js
to wrap sql.js.Published by simolus3 over 2 years ago
DataClassName.extending
to control the superclass of generated row classes.setup
parameter to the constructors of WebDatabase
too.CREATE VIEW
statements.MultiExecutor.withReadPool
constructor to load-balance between multiple reading executors. This can be used in a multi-isolate approach if some queries are expensive.drift_dev
also has new features:
validateDatabaseSchema
extension to package:drift_dev/api/migrations.dart
. It validates that the schema of a database at runtime matches what one would expect. This can be used to test the correctness of migrations at runtime without special testing code.Published by simolus3 over 2 years ago
update(todos).replace(newEntry)
, you can now write todos.replaceOne(newEntry)
.from(table)
API introduced in 1.3.0. Having the methods on the table instances turned out to be even easier!LIST(SELECT ...)
as a result column to get all results of the inner select as a List
in the result set.Published by simolus3 almost 3 years ago
from(table)
method to generated databases. It can be used to write common queries more concisely.groupConcat
nullable in the Dart API.NativeDatabase
when multiple statements are run in a single call. In previous versions, parts of the SQL string would otherwise be ignored.Published by simolus3 almost 3 years ago
analyzer
and analyzer_plugin
.Published by simolus3 almost 3 years ago
This minor release implements changes in the generated code necessary to support streams from views in the Dart API.
Additionally,
watchSingle()
and watchSingleOrNull()
now throws an error with a stack trace when used on a query emitting multiple rows.sqlparser
0.19.1, group_concat
was made nullable as evaluates to NULL
for empty groups.Published by simolus3 almost 3 years ago
This patch release contains the following changes:
serialize
parameter to false
on the DriftIsolate
methods.The generator, released as drift_dev
version 1.1.1
contains a fix related to custom row classes with generateInsertable: true
.
Published by simolus3 almost 3 years ago
This release consists of drift
version 1.1.0
, drift_dev
version 1.1.0
and sqlparser
version 0.19.0
:
references
method to BuildColumn
to reference a column declared in another Dart table.generateInsertable
option to @UseRowClass
. When enabled, the generator will emit an extension to use the row class as an Insertable
.new_sql_code_generation
option in specific scenarios..drift
files.generatedAs
method to declare generated columns for Dart tables.OrderingTerm.random
to fetch rows in a random order.STRICT
tables defined in .drift
files..drift
files.Big thanks to everyone who contributed to this release!
Published by simolus3 almost 3 years ago
This hotfix release fixes a bug when comparing AST nodes with a different amount of children (#1575). The broken comparison may have caused false-positives in migration tests.
Published by simolus3 about 3 years ago
With this release, running moor_generator migrate
will also rewrite usages of the moor
plugin in an analysis_options.yaml
file.
Published by simolus3 about 3 years ago
DoUpdate.withExcluded
to refer to the excluded row in an upsert clause.where
clause to DoUpdate
constructorsWith this release, moor has been renamed to drift. No immediate action is necessary, the moor
package will continue to work until the next breaking release. The functionality of moor 4.6.0 is identical to drift 1.0.1.
An automatic migration tool can help you make the switch from moor to drift in minutes. See the documentation for all the details. Thanks!