restore method

Future<void> restore()
inherited

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);
}