delete<TModel extends SqliteModel> method

  1. @override
Future<int> delete<TModel extends SqliteModel>(
  1. TModel instance, {
  2. Query? query,
  3. ModelRepository<SqliteModel>? repository,
})

Remove record from SQLite. query is ignored.

Implementation

@override
Future<int> delete<TModel extends SqliteModel>(instance, {query, repository}) async {
  final adapter = modelDictionary.adapterFor[TModel]!;
  final db = await getDb();
  final existingPrimaryKey = await adapter.primaryKeyByUniqueColumns(instance, db);

  if (instance.isNewRecord || existingPrimaryKey == null) {
    throw ArgumentError(
      '$instance cannot be deleted because it does not exist in the SQLite database.',
    );
  }

  return await db.delete(
    '`${adapter.tableName}`',
    where: '${InsertTable.PRIMARY_KEY_COLUMN} = ?',
    whereArgs: [existingPrimaryKey],
  );
}