MethodMergeBuilder function
Implementation
Method MethodMergeBuilder({
required String className,
required List<FieldInfo> fields,
}) {
return Method((b) {
b.annotations.add(refer('override'));
b.name = 'merge';
b.returns = refer(className);
b.requiredParameters.add(Parameter((b) {
b.name = 'other';
b.type = refer('$className?');
}));
b.body = Code('''
if (other == null) return this;
return $className(
${fields.map((field) {
final fieldName = field.name;
if (field.hasDto) {
return '$fieldName: $fieldName?.merge(other.$fieldName) ?? other.$fieldName';
}
return '$fieldName: other.$fieldName ?? $fieldName';
}).join(', ')},);
''');
});
}