delete method
return how many rows affected!
Implementation
@override
Future<int> delete() async {
// init all table aliases.
_beforeQuery();
var clz = modelInspector.meta(className)!;
var tableName = clz.tableName;
var idField = clz.idFields.first;
var softDeleteField = clz.softDeleteField;
if (softDeleteField == null) {
return deletePermanent();
}
SqlQuery q = SqlQuery(tableName, _alias);
// _allJoins().map((e) => )
q.joins.addAll(_allJoins().map((e) => e._toSqlJoin()));
var conditions = columns.fold<List<SqlCondition>>(
[],
(init, e) => init
..addAll(e.toSqlConditions(_alias, softDeleteField.columnName)));
q.conditions.appendAll(conditions);
var sql = q.toSoftDeleteSql(idField.columnName, softDeleteField.columnName,
clz.versionField?.columnName);
var params = q.params;
params['deleted'] = true;
_logger.fine('\t soft delete sql: $sql');
var rows = await db.query(sql, params, tableName: tableName);
_logger.fine('\t soft delete result rows: ${rows.affectedRowCount}');
return rows.affectedRowCount ?? -1;
}