doDeleteSQL method
FutureOr<Iterable<Map<String, dynamic> > >
doDeleteSQL(
- String entityName,
- String table,
- SQL sql,
- Transaction transaction,
- DBSQLMemoryAdapterContext connection,
override
Implementation
@override
FutureOr<Iterable<Map<String, dynamic>>> doDeleteSQL(
String entityName,
String table,
SQL sql,
Transaction transaction,
DBSQLMemoryAdapterContext connection) {
if (sql.isDummy) return <Map<String, dynamic>>[];
var map = _getTableMap(table, false);
if (map == null) {
return <Map<String, dynamic>>[];
}
var tableScheme = getTableScheme(table, relationship: sql.relationship);
var entityHandler = getEntityHandler(tableName: table);
if (tableScheme == null || tableScheme.fieldsReferencedTablesLength == 0) {
var entries = map.entries.where((e) {
return sql.condition!.matchesEntityMap(e.value,
namedParameters: sql.parametersByPlaceholder,
entityHandler: entityHandler);
}).toList();
_checkNotReferencedEntities(entries, table, sql);
return _removeEntries(table, entries, map);
}
var entries = map.entries
.map((e) {
var obj = _resolveEntityMap(e.value, entityHandler, tableScheme);
var match = sql.condition!.matchesEntityMap(obj,
namedParameters: sql.parametersByPlaceholder,
entityHandler: entityHandler);
return match ? MapEntry(e.key, obj) : null;
})
.whereNotNull()
.toList(growable: false);
_checkNotReferencedEntities(entries, table, sql);
return _removeEntries(table, entries, map);
}