restore method
Restores a soft-deleted record.
Implementation
Future<void> restore() async {
final def = expectDefinition();
if (!def.usesSoftDeletes) {
throw StateError(
'${def.modelName} does not support soft deletes. Enable softDeletes.',
);
}
final resolver = _resolveResolverFor(def);
final pk = def.primaryKeyField;
if (pk == null) {
throw StateError(
'Model ${def.modelName} must declare a primary key before restore.',
);
}
final key = _primaryKeyValue(def);
if (key == null) {
throw StateError(
'Model ${def.modelName} is missing primary key ${pk.name}.',
);
}
final column =
def.softDeleteField?.columnName ?? def.metadata.softDeleteColumn;
final plan = MutationPlan.update(
definition: def,
rows: [
MutationRow(values: {column: null}, keys: {pk.columnName: key}),
],
driverName: resolver.driver.metadata.name,
);
await resolver.runMutation(plan);
_asAttributes.setAttribute(column, null);
}