mutationRowFromModel method

MutationRow mutationRowFromModel(
  1. T model, {
  2. JsonUpdateBuilder<T>? jsonUpdates,
})

Implementation

MutationRow mutationRowFromModel(
  T model, {
  JsonUpdateBuilder<T>? jsonUpdates,
}) {
  final allValues = definition.toMap(model, registry: codecs);
  final keyColumn = definition.primaryKeyField?.columnName;
  if (keyColumn == null) {
    throw StateError(
      'Primary key required for mutations on ${definition.modelName}.',
    );
  }
  final keyValue = allValues[keyColumn];
  if (keyValue == null) {
    throw StateError('Primary key column $keyColumn cannot be null.');
  }

  // Filter out non-updatable fields (like primary keys)
  final values = <String, Object?>{};
  for (final field in definition.fields) {
    if (field.isUpdatable && allValues.containsKey(field.columnName)) {
      values[field.columnName] = allValues[field.columnName];
    }
  }

  final jsonClauses = jsonUpdatesFor(model, jsonUpdates);
  return MutationRow(
    values: values,
    keys: {keyColumn: keyValue},
    jsonUpdates: jsonClauses,
  );
}