mutationRowFromModel method
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,
);
}