VersionedTable class

A drift table implementation that, instead of being generated, is constructed from individual fields

This allows the code generated for step-by-step migrations to be a lot smaller than the code typically generated by drift. Features like type converters or information about unique/primary keys are not present in these tables.

Inheritance
Mixed-in types
Implementers

Constructors

VersionedTable({required String entityName, required bool isStrict, required bool withoutRowId, required DatabaseConnectionUser attachedDatabase, required List<GeneratedColumn<Object> Function(String)> columns, required List<String> tableConstraints, String? alias})
Create a table from the individual fields.
VersionedTable.aliased({required VersionedTable source, required String? alias})
Create a table by copying fields from source and applying an alias.

Properties

$columns List<GeneratedColumn<Object>>
All columns from this table or view.
final
$primaryKey Set<GeneratedColumn<Object>>
The primary key of this table. Can be empty if no custom primary key has been specified.
no setterinherited
actualTableName String
The name of the table in the database. Unlike aliasedName, this can not be aliased.
no setteroverride
aliasedName String
The (potentially aliased) name of this table or view.
no setteroverride
asDslTable Table
Type system sugar. Implementations are likely to inherit from both TableInfo and Tbl and can thus just return their instance.
no setterinherited
attachedDatabase DatabaseConnectionUser
The generated database instance that this view or table is attached to.
final
columnsByName Map<String, GeneratedColumn<Object>>
Gets all $columns in this table or view, indexed by their (non-escaped) name.
no setterinherited
customConstraints List<String>
Custom table constraints that should be added to the table.
final
dontWriteConstraints bool
Drift will write some table constraints automatically, for instance when you override primaryKey. You can turn this behavior off if you want to. This is intended to be used by generated code only.
no setteroverride
entityName String
The (unalised) name of this entity in the database.
final
hashCode int
The hash code for this object.
no setterinherited
isStrict bool
Whether this table is STRICT.
final
primaryKey Set<Column<Object>>
Override this to specify custom primary keys:
no setterinherited
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
tableName String?
The sql table name to be used. By default, drift will use the snake_case representation of your class name as the sql table name. For instance, a Table class named LocalSettings will be called local_settings by default. You can change that behavior by overriding this method to use a custom name. Please note that you must directly return a string literal by using a getter. For instance @override String get tableName => 'my_table'; is valid, whereas @override final String tableName = 'my_table'; or @override String get tableName => createMyTableName(); is not.
no setterinherited
uniqueKeys List<Set<GeneratedColumn<Object>>>
The unique key of this table. Can be empty if no custom primary key has been specified.
no setterinherited
withoutRowId bool
Whether to append a WITHOUT ROWID clause in the CREATE TABLE statement. This is intended to be used by generated code only.
final

Methods

blob() ColumnBuilder<Uint8List>
Use this as the body of a getter to declare a column that holds arbitrary data blobs, stored as an Uint8List. Example:
inherited
boolean() ColumnBuilder<bool>
Use this as the body of a getter to declare a column that holds bools. Example (inside the body of a table class):
inherited
createAlias(String alias) VersionedTable
Creates an alias of this table or view that will write the name alias when used in a query.
override
customType<T extends Object>(UserDefinedSqlType<T> type) ColumnBuilder<T>
Defines a column with a custom type when used as a getter.
inherited
dateTime() ColumnBuilder<DateTime>
Use this as the body of a getter to declare a column that holds date and time.
inherited
int64() ColumnBuilder<BigInt>
Use this as the body of a getter to declare a column that holds a 64-big integer as a BigInt.
inherited
integer() ColumnBuilder<int>
Use this as the body of a getter to declare a column that holds integers.
inherited
intEnum<T extends Enum>() ColumnBuilder<int>
Creates a column to store an enum class T.
inherited
map(Map<String, dynamic> data, {String? tablePrefix}) QueryRow
Maps the given row returned by the database into the fitting data class.
override
mapFromCompanion(Insertable<QueryRow> companion, DatabaseConnectionUser database) Future<QueryRow>
Converts a companion to the real model class, D.
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
real() ColumnBuilder<double>
Use this as the body of a getter to declare a column that holds floating point numbers. Example
inherited
sqliteAny() ColumnBuilder<DriftAny>
Use this as a the body of a getter to declare a column that holds arbitrary values not modified by drift at runtime.
inherited
text() ColumnBuilder<String>
Use this as the body of a getter to declare a column that holds strings. Example (inside the body of a table class):
inherited
textEnum<T extends Enum>() ColumnBuilder<String>
Creates a column to store an enum class T.
inherited
toString() String
A string representation of this object.
inherited
validateIntegrity(Insertable<QueryRow> instance, {bool isInserting = false}) VerificationContext
Validates that the given entity can be inserted into this table, meaning that it respects all constraints (nullability, text length, etc.).
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited

Static Methods

col<T extends Object>(String name) Expression<T>
Generates an expression referencing a column in the same table with the given name.