WasmDatabase class

An experimental, WebAssembly based implementation of a drift sqlite3 database.

Using this database requires adding a WebAssembly file for sqlite3 to your app. The documentation describes how to obtain this file. A working example is also available in the drift repository.

Inheritance
Available extensions

Constructors

WasmDatabase({required CommonSqlite3 sqlite3, required String path, WasmDatabaseSetup? setup, IndexedDbFileSystem? fileSystem, bool logStatements = false, bool enableMigrations = true, bool cachePreparedStatements = true})
Creates a wasm database at path in the virtual file system of the sqlite3 module. If fileSystem provided, the data is guaranteed to be stored in the IndexedDB when the request is complete. Attention! Insert/update queries may be slower when this option enabled. If you want to insert more than one rows, be sure you run in a transaction if possible.
factory
WasmDatabase.inMemory(CommonSqlite3 sqlite3, {WasmDatabaseSetup? setup, bool logStatements = false, bool cachePreparedStatements = true})
Creates an in-memory database in the loaded sqlite3 database.
factory
WasmDatabase.opened(CommonDatabase database, {bool logStatements = false, WasmDatabaseSetup? setup, bool closeUnderlyingOnClose = true, bool enableMigrations = true, bool cachePreparedStatements = true})
Creates a drift executor for an opened database from the sqlite3 package.
factory

Properties

delegate DatabaseDelegate
The DatabaseDelegate to send queries to.
finalinherited
dialect SqlDialect
The SqlDialect to use for this database engine.
no setterinherited
hashCode int
The hash code for this object.
no setterinherited
impl QueryDelegate
no setterinherited
isSequential bool
finalinherited
logStatements bool
getter/setter pairinherited
runtimeType Type
A representation of the runtime type of the object.
no setterinherited

Methods

beginExclusive() QueryExecutor
Returns a new QueryExecutor that, when first opened, takes an exclusive lock over this executor and prevents queries from running until it is closed.
inherited
beginTransaction() TransactionExecutor
Starts a TransactionExecutor.
inherited
beginTransactionInContext(_BaseExecutor context) TransactionExecutor
inherited
close() Future<void>
Closes this database connection and releases all resources associated with it. Implementations should also handle close calls in a state where the database isn't open.
inherited
ensureOpen(QueryExecutorUser user) Future<bool>
Opens the executor, if it has not yet been opened.
inherited
interceptWith(QueryInterceptor interceptor) QueryExecutor

Available on QueryExecutor, provided by the ApplyInterceptor extension

Returns a QueryExecutor that will use this executor internally, but with calls intercepted by the given interceptor.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
runBatched(BatchedStatements statements) Future<void>
Prepares and runs statements.
inherited
runCustom(String statement, [List<Object?>? args]) Future<void>
Runs a custom SQL statement without any variables. The result of that statement will be ignored.
inherited
runDelete(String statement, List<Object?> args) Future<int>
Runs an delete statement and returns how many rows where affected.
inherited
runInsert(String statement, List<Object?> args) Future<int>
Runs an insert statement with the given variables. Returns the row id or the auto_increment id of the inserted row.
inherited
runSelect(String statement, List<Object?> args) Future<List<Map<String, Object?>>>
Runs a select statement with the given variables and returns the raw results.
inherited
runUpdate(String statement, List<Object?> args) Future<int>
Runs an update statement with the given variables and returns how many rows where affected.
inherited
toString() String
A string representation of this object.
inherited

Operators

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

Static Methods

open({required String databaseName, required Uri sqlite3Uri, required Uri driftWorkerUri, FutureOr<Uint8List?> initializeDatabase()?, WasmDatabaseSetup? localSetup, bool enableMigrations = true}) Future<WasmDatabaseResult>
Opens a database on the web.
probe({required Uri sqlite3Uri, required Uri driftWorkerUri, String? databaseName}) Future<WasmProbeResult>
Probes for:
workerMainForOpen({WasmDatabaseSetup? setupAllDatabases}) → void
The entrypoint for a web worker suitable for use with open.