drift
library
Classes
AggregateFunctionExpression <D extends Object >
An expression invoking an aggregate function .
ArgumentsForBatchedStatement
Instruction to run a batched sql statement with the arguments provided.
BaseComputedField <SqlType extends Object , $Table extends Table >
The base class for all computed fields
BaseReferences <$Database extends GeneratedDatabase , $Table extends Table , $Dataclass >
Base class for the "WithReference" classes
BaseSelectStatement <Row >
The abstract base class for all select statements in the drift api.
BaseTableManager <$Database extends GeneratedDatabase , $Table extends Table , $Dataclass , $FilterComposer extends Composer <$Database , $Table > , $OrderingComposer extends Composer <$Database , $Table > , $ComputedFieldComposer extends Composer <$Database , $Table > , $CreateCompanionCallback extends Function , $UpdateCompanionCallback extends Function , $DataclassWithReferences , $ActiveDataclass , $CreatePrefetchHooksCallback extends Function >
Base class for all table managers
Most of this classes functionality is kept in a separate TableManagerState class
This is so that the state can be passed down to lower level managers
Batch
Contains operations to run queries in a batched mode.
BatchedStatements
Stores information needed to run batched statements in the order they were
issued without preparing statements multiple times.
CaseWhen <T extends Object , R extends Object >
A single when-then case for CASE WHEN
expression in sqlite.
CaseWhenExpression <R extends Object >
A CASE WHEN
expression without a base expression in sqlite.
Collate
Collating functions used to compare texts in SQL.
Column <T extends Object >
Base class for columns in sql. Type T
refers to the type a value of this
column will have in Dart.
ColumnBuilder <T extends Object >
A column builder is used to specify which columns should appear in a table.
All of the methods defined in this class and its subclasses are not meant to
be called at runtime. Instead, the generator will take a look at your
source code (specifically, it will analyze which of the methods you use) to
figure out the column structure of a table.
ColumnFilters <T extends Object >
Built in filters for all columns
ColumnOrderings <T extends Object >
Defines a class which is used to wrap a column to only expose ordering functions
ColumnWithTypeConverterFilters <CustomType , CustomTypeNonNullable , T extends Object >
Built in filters for columns that have a type converter
Component
A component is anything that can appear in a sql query.
ComposableOrdering
Defines a class that can be used to compose orderings for a column
Composer <Database extends GeneratedDatabase , CurrentTable extends Table >
A base class for writing computed fields/filters/orderings which have the correct aliases & joins applied
ComputedField <SqlType extends Object , $Table extends Table >
An computed field for a table.
ComputedFieldWithConverter <DartType , SqlType extends Object , $Table extends Table >
An computed field for a table which has a converter
Constant <T extends Object >
An expression that represents the value of a dart object encoded to sql
by writing them into the sql statements. For most cases, consider using
Variable instead.
CustomExpression <D extends Object >
A custom expression that can appear in a sql statement.
The CustomExpression.content will be written into the query without any
modification.
CustomResultSet
Base class for classes generated by custom queries in .drift
files.
CustomSelectStatement
A select statement that is constructed with a raw sql prepared statement
instead of the high-level drift api.
CustomSqlType <T extends Object >
Interface for a custom SQL type.
DatabaseAccessor <T extends GeneratedDatabase >
Class that runs queries to a subset of all available queries in a database.
DatabaseConnection
A database connection managed by drift. This consists of two components:
DatabaseConnectionUser
Manages a DatabaseConnection to send queries to the database.
DatabaseSchemaEntity
Some abstract schema entity that can be stored in a database. This includes
tables, triggers, views, indexes, etc.
DataClass
A common supertype for all data classes generated by drift. Data classes are
immutable structures that represent a single row in a database table.
DataClassName
A class to be used as an annotation on Table classes to customize the
name for the data class that will be generated for the table class. The data
class is a dart object that will be used to represent a row in the table.
DateTimeModifier
DateTime modifier constants.
DeleteStatement <T extends Table , D >
A DELETE
statement in sql
DialectAwareSqlType <T extends Object >
A CustomSqlType with access on the dialect of the database engine when
used in queries.
DoNothing <T extends Table , D >
Upsert clause that does nothing on conflict
DoUpdate <T extends Table , D >
A DoUpdate upsert clause can be used to insert or update a custom
companion when the underlying companion already exists.
DriftAccessor
Annotation to use on classes that implement DatabaseAccessor . It specifies
which tables should be made available in this dao.
DriftAny
A drift type around a SQL value with an unknown type.
DriftDatabase
Use this class as an annotation to inform the generator that a database
class should be generated using the specified DriftDatabase.tables .
DriftDatabaseOptions
Database-specific options used by drift.
DriftRuntimeOptions
Defines additional runtime behavior for drift. Changing the fields of this
class is rarely necessary.
DriftView
An annotation specifying view properties
EnumIndexConverter <T extends Enum >
Implementation for an enum to int converter that uses the index of the enum
as the value stored in the database.
EnumNameConverter <T extends Enum >
Implementation for an enum to string converter that uses the name of the
enum as the value stored in the database.
Expression <D extends Object >
Any sql expression that evaluates to some generic value. This does not
include queries (which might evaluate to multiple values) but individual
columns, functions and operators.
FunctionCallExpression <R extends Object >
A sql expression that calls a function.
FunctionParameter
Base class for everything that can be used as a function parameter in sql.
GeneratedAs
Information filled out by the generator to support generated or virtual
columns.
GeneratedColumn <T extends Object >
Implementation for a Column declared on a table.
GeneratedColumnWithTypeConverter <D , S extends Object >
A GeneratedColumn with a type converter attached to it.
GeneratedDatabase
A base class for all generated databases.
GenerationContext
Contains information about a query while it's being constructed.
GroupBy
A "group by" clause in sql.
HasResultSet
Base class for dsl Table s and View s.
Index
A sqlite index on columns or expressions.
Insertable <D >
Common interface for objects which can be inserted or updated into a
database.
D
is the associated data class.
InsertStatement <T extends Table , D >
Represents an insert statement
Join <T extends HasResultSet , D >
Used internally by drift when calling SimpleSelectStatement.join .
JoinBuilder
A class that contains the information needed to create a join
JoinedSelectStatement <FirstT extends HasResultSet , FirstD >
A SELECT
statement that operates on more than one table.
JsonKey
Annotation to use on column getters inside of a Table to define the name
of the column in the json used by DataClass.toJson .
LazyDatabase
A special database executor that delegates work to another QueryExecutor .
The other executor is lazily opened by a DatabaseOpener .
Limit
A limit clause inside a select, update or delete statement.
MigrationStrategy
Handles database migrations by delegating work to OnCreate and OnUpgrade
methods.
Migrator
Runs migrations declared by a MigrationStrategy .
MultiExecutor
A query executor for drift that delegates work to multiple executors.
MultiSelectable <T >
Selectable methods for returning multiple results.
MultiTypedResultEntry <T >
Class which contains a key and a list of references.
Used internally by drift to pass prefetched data to the TypedResult object.
MultiTypedResultKey <$Table extends Table , $Dataclass >
This class is used to convert a table which expects a single dataclass per row into a table that can contain a multiple dataclasses per row.
However when we prefetch multiple references, we need to store them in a list, which isn't supported by the referenced table class.
For single references, we use original referenced table as a key in the TypedResult._parsedData object.
This class is implemented by the code generator and should
not be instantiated or extended manually.
NullAwareTypeConverter <D , S extends Object >
A type converter automatically mapping null
values to null
in both
directions.
OnCreateQuery
An internal schema entity to run an sql statement when the database is
created.
OpeningDetails
Provides information about whether migrations ran before opening the
database.
OrderBy
An order-by clause as part of a select statement. The clause can consist
of multiple OrderingTerm s, with the first terms being more important and
the later terms only being considered if the first term considers two rows
equal.
OrderingBuilder
Defines a class which will hold the information needed to create an ordering
OrderingTerm
A single term in a OrderBy clause. The priority of this term is determined
by its position in OrderBy.terms .
PrefetchHooks
When a user requests that certain fields are prefetched, we create a PrefetchHooks class for the manager.
This class has hooks for adding joins to the query before the query is executed, and for running prefetches after the query is executed.
This class is implemented by the code generator and should
not be instantiated or extended manually.
ProcessedTableManager <$Database extends GeneratedDatabase , $Table extends Table , $Dataclass , $FilterComposer extends Composer <$Database , $Table > , $OrderingComposer extends Composer <$Database , $Table > , $ComputedFieldComposer extends Composer <$Database , $Table > , $CreateCompanionCallback extends Function , $UpdateCompanionCallback extends Function , $DataclassWithReferences , $ActiveDataclass , $CreatePrefetchHooksCallback extends Function >
A table manager that exposes methods to a table manager that already has
filters/orderings/limit applied.
Query <T extends HasResultSet , D >
Statement that operates with data that already exists (select, delete,
update).
QueryExecutor
A query executor is responsible for executing statements on a database and
return their results in a raw form.
QueryExecutorUser
Callbacks passed to QueryExecutor.ensureOpen to run schema migrations when
the database is first opened.
QueryInterceptor
An interceptor for SQL queries.
QueryRow
For custom select statements, represents a row in the result set.
RawValuesInsertable <D >
An Insertable implementation based on raw column expressions.
ReferenceName
Annotation to use on reference columns inside of a Table to define the name
that the manager will use when refering to this relation in the reverse.
ResultSetImplementation <Tbl , Row >
Interface for schema entities that have a result set.
RootTableManager <$Database extends GeneratedDatabase , $Table extends Table , $Dataclass , $FilterComposer extends Composer <$Database , $Table > , $OrderingComposer extends Composer <$Database , $Table > , $ComputedFieldComposer extends Composer <$Database , $Table > , $CreateCompanionCallback extends Function , $UpdateCompanionCallback extends Function , $DataclassWithReferences , $ActiveDataclass , $CreatePrefetchHooksCallback extends Function >
A table manager with top level function for creating, reading, updating, and
deleting items.
Selectable <T >
Abstract class for queries which can return one-time values or a stream
of values.
SimpleSelectStatement <T extends HasResultSet , D >
A select statement that doesn't use joins.
SingleOrNullSelectable <T >
Selectable methods for returning or streaming single,
nullable results.
SingleSelectable <T >
Selectable methods for returning or streaming single,
non-nullable results.
SqlTypes
Database-specific helper methods mapping Dart values from and to SQL
variables or literals.
StreamQueryUpdateRules
Collects a set of UpdateRule s which can be used to express how a set of
direct updates to a table affects other updates.
Subquery <Row >
A subquery allows reading from another complex query in a join.
Table
Subclasses represent a table in a database generated by drift.
TableIndex
Annotations for Dart table classes to define a SQL index
to add to the table.
TableManagerState <$Database extends GeneratedDatabase , $Table extends Table , $Dataclass , $FilterComposer extends Composer <$Database , $Table > , $OrderingComposer extends Composer <$Database , $Table > , $ComputedFieldComposer extends Composer <$Database , $Table > , $CreateCompanionCallback extends Function , $UpdateCompanionCallback extends Function , $DataclassWithReferences , $ActiveDataclass , $CreatePrefetchHooksCallback extends Function >
Defines a class that holds the state for a BaseTableManager
TableMigration
Contains instructions needed to run a complex migration on a table, using
the steps described in Making other kinds of table schema changes .
TableUpdate
Contains information on how a table was updated, which can be used to find
queries that are affected by this.
TableUpdateQuery
A table update query describes information to listen for TableUpdate s.
TableValuedFunction <Self extends ResultSetImplementation >
In sqlite3, a table-valued function is a function that resolves to a result
set, meaning that it can be selected from.
TransactionExecutor
A QueryExecutor that runs multiple queries atomically.
Trigger
A sqlite trigger that's executed before, after or instead of a subset of
writes on a specific tables.
In drift, triggers can only be declared in .drift
files.
TypeConverter <D , S >
Maps a custom dart object of type D
into a primitive type S
understood
by the sqlite backend.
TypedResult
A result row in a JoinedSelectStatement that can parse the result of
multiple entities.
Uint8List
A fixed-length list of 8-bit unsigned integers.
UpdateCompanion <D >
An update companion for a DataClass which is used to write data into a
database using InsertStatement.insert or UpdateStatement.write .
UpdateRule
A common rule that describes how a TableUpdate has other TableUpdate s.
UpdateStatement <T extends Table , D >
Represents an UPDATE
statement in sql.
UpsertClause <T extends Table , D >
A upsert clause controls how to behave when a uniqueness constraint is
violated during an insert.
UpsertMultiple <T extends Table , D >
Upsert clause that consists of multiple clauses .
UseRowClass
An annotation specifying an existing class to be used as a data class.
Value <T >
A wrapper around arbitrary data T
to indicate presence or absence
explicitly.
ValueSerializer
Serializer responsible for mapping atomic types from and to json.
Variable <T extends Object >
An expression that represents the value of a dart object encoded to sql
using prepared statements.
VerificationContext
Used internally by drift for integrity checks.
VerificationMeta
Additional information that is passed to GeneratedColumn s when verifying
data to provide more helpful error messages.
VerificationResult
Returned by GeneratedColumn.isAcceptableValue to provide a description
when a valid is invalid.
View
Subclasses represent a view in a database generated by drift.
ViewInfo <Self extends HasResultSet , Row >
A sqlite view.
VirtualColumnBuilder <T extends Object >
A column builder for virtual, generated columns.
Where
A where clause in a select, update or delete statement.
WritePropagation
An UpdateRule for triggers that exist in a database.
Enums
DriftSqlType <T extends Object >
An enumation of type mappings that are builtin to drift and drift_dev
.
InsertMode
Enumeration of different insert behaviors. See the documentation on the
individual fields for details.
KeyAction
A KeyAction can be used on a BuildColumn.references clause to describe
how updates and deletes to a referenced table should propagate in your
database.
NullsOrder
Describes how to order nulls
OrderingMode
Describes how to order rows
Precedence
Used to order the precedence of sql expressions so that we can avoid
unnecessary parens when generating sql statements.
SqlDialect
An enumeration of database systems supported by drift. Only
SqlDialect.sqlite is officially supported, all others are in an
experimental state at the moment.
UpdateKind
Classifies a TableUpdate by what kind of write happened - an insert, an
update or a delete operation.
Extensions
ApplyInterceptor
on QueryExecutor
Extension to wrap a QueryExecutor with a QueryInterceptor .
ApplyInterceptorConnection
on DatabaseConnection
Extension to wrap a DatabaseConnection with a QueryInterceptor .
ArithmeticAggregates
on Expression <DT >
Provides aggregate functions that are available for numeric expressions.
ArithmeticBigIntExpr
on Expression <BigInt >
Defines the -
, *
and /
operators on sql expressions that support it.
ArithmeticExpr
on Expression <DT >
Defines the -
, *
and /
operators on sql expressions that support it.
BaseAggregate
on Expression <DT >
Provides aggregate functions that are available for each expression.
BigIntAggregates
on Expression <BigInt >
Provides aggregate functions that are available for BigInt expressions.
BigIntFilters
on ColumnFilters <T >
Built in filters for BigInt columns
BitwiseBigInt
on Expression <BigInt >
Extensions providing bitwise operators ~ , on integer expressions that are
represented as a Dart BigInt .
BitwiseInt
on Expression <int >
Extensions providing bitwise operators ~ , on integer expressions.
BooleanExpressionOperators
on Expression <bool >
Defines operations on boolean values.
BoolFilters
on ColumnFilters <bool >
Built in filters for bool columns
BuildColumn
on ColumnBuilder <T >
DSL extension to define a column inside a drift table.
BuildGeneralColumn
on _BaseColumnBuilder<T >
Column builders available for both virtual and non-virtual columns.
BuildInt64Column
on ColumnBuilder <BigInt >
Tells the generator to build an Int64Column . See the docs at ColumnBuilder
for details.
BuildIntColumn
on ColumnBuilder <T >
Tells the generator to build an IntColumn . See the docs at ColumnBuilder
for details.
BuildTextColumn
on ColumnBuilder <T >
Tells the generator to build an TextColumn . See the docs at
ColumnBuilder for details.
ComparableExpr
on Expression <DT >
Defines extension functions to express comparisons in sql
DateFilters
on ColumnFilters <T >
Built in filters for DateTime columns
DateTimeAggregate
on Expression <DateTime >
Provides aggregate functions that are available on date time expressions.
DateTimeExpressions
on Expression <DateTime >
Provides expressions to extract information from date time values, or to
calculate the difference between datetimes.
DestructiveMigrationExtension
on GeneratedDatabase
Extension providing the destructiveFallback strategy.
NameWithAlias
on ResultSetImplementation
Extension to generate an alias for a table or a view.
NumFilters
on ColumnFilters <T >
Built in filters for int/double columns
OldDbFieldInDatabaseAccessor
on DatabaseAccessor <T >
Extension for generated dao classes to keep the old db field that was
renamed to DatabaseAccessor.attachedDatabase in drift 3.0
QueryTableExtensions
on SingleTableQueryMixin <T , D >
Extension for statements on a table.
RowIdExtension
on TableInfo <Table , dynamic >
Extension to use the rowid
of a table in Dart queries.
StringExpressionOperators
on Expression <String >
Defines methods that operate on a column storing String values.
StringFilters
on ColumnFilters <String >
Built in filters for int/double columns
TableInfoUtils
on ResultSetImplementation <TableDsl , D >
Static extension members for generated table classes.
TableOrViewStatements
on ResultSetImplementation <Tbl , Row >
Easily-accessible methods to compose common operations or statements on
tables or views.
TableStatements
on TableInfo <Tbl , Row >
Easily-accessible methods to compose common operations or statements on
tables.
Functions
$_aliasNameGenerator (GeneratedColumn <Object > currentColumn , GeneratedColumn <Object > referencedColumn )
→ String
A simple function for generating aliases for referenced columns
$_getPrefetchedData <$CurrentDataclass , $CurrentTable extends Table , $ReferencedDataclass > ({required ProcessedTableManager <dynamic , dynamic , $ReferencedDataclass , dynamic , dynamic , dynamic , dynamic , dynamic , dynamic , $ReferencedDataclass , dynamic > managerFromTypedResult (TypedResult ), required MultiTypedResultKey <Table , dynamic > referencedTable , required List <TypedResult > typedResults , required TableInfo <$CurrentTable , $CurrentDataclass > currentTable , required Iterable <$ReferencedDataclass > referencedItemsForCurrentItem ($CurrentDataclass item , List <$ReferencedDataclass > referencedItems ) })
→ Future <List <MultiTypedResultEntry <$ReferencedDataclass > > >
This function is used to fetch referenced data for a List
coalesce <T extends Object > (List <Expression <T > > expressions )
→ Expression <T >
Evaluates to the first expression in expressions
that's not null, or
null if all expressions
evaluate to null.
countAll ({Expression <bool > ? filter })
→ Expression <int >
Returns the amount of rows in the current group matching the optional
filter
.
crossJoin (HasResultSet other , {bool ? useColumns })
→ Join <HasResultSet , dynamic >
Creates a sql cross join that can be used in
SimpleSelectStatement.join .
existsQuery (BaseSelectStatement select )
→ Expression <bool >
The EXISTS
operator checks whether the select
subquery returns any rows.
ifNull <T extends Object > (Expression <T > first , Expression <T > second )
→ Expression <T >
Evaluates to the first expression that's not null, or null if both evaluate
to null. See coalesce if you need more than 2.
innerJoin (HasResultSet other , Expression <bool > on , {bool ? useColumns })
→ Join <HasResultSet , dynamic >
Creates a sql inner join that can be used in SimpleSelectStatement.join .
isNotNull (Expression <Object > inner )
→ Expression <bool >
Expression that is true if the inner expression resolves to a non-null
value.
isNull (Expression <Object > inner )
→ Expression <bool >
Expression that is true if the inner expression resolves to a null value.
leftOuterJoin (HasResultSet other , Expression <bool > on , {bool ? useColumns })
→ Join <HasResultSet , dynamic >
Creates a sql left outer join that can be used in
SimpleSelectStatement.join .
notExistsQuery (BaseSelectStatement select )
→ Expression <bool >
The NOT EXISTS
operator evaluates to true
if the select
subquery does
not return any rows.
subqueryExpression <R extends Object > (BaseSelectStatement statement )
→ Expression <R >
Creates a subquery expression from the given statement
.
Exceptions / Errors
CouldNotRollBackException
Exception thrown by drift when rolling back a transaction fails.
DriftWrappedException
A wrapper class for internal exceptions thrown by the underlying database
engine when drift can give additional context or help.
InvalidDataException
Thrown when one attempts to insert or update invalid data into a table.