delete method
Delete this model safely through RelationalModel.
- Respects softDeletes
- Uses Query.forceDelete for physical delete
- Prevents mass-delete (must have PK)
Implementation
Future<int> delete({Map<String, dynamic>? where}) async
{
final map = toMap();
final pk = primaryKey;
final id = map[pk];
if (id == null) {
throw Exception('Cannot delete: primary key ($pk) is null.');
}
// Soft delete mode
if (softDeletes) {
final $now = DateFormat('yyyy-MM-dd HH:mm:ss').format(DateTime.now().toUtc());
return await dbService.update(
table,
{'deleted_at': $now},
where: '$pk = ?',
params: [id],
);
}
// Build query
var q = query().where(pk, id);
// Additional key=>value constraints
if (where != null) {
where.forEach((key, value) {
q = q.where(key, value);
});
}
// Perform raw delete using your Query.forceDelete
return await q.forceDelete();
}