Hi,
this library looks great! What about implementing the uses feature in the @Mapper annotation?
https://mapstruct.org/documentation/dev/reference/html/#_advanced_mapping_options
Using this flag, developers can reduce the code duplication to map existing objects, by plugging other mappers into the parent one.
Example
Entities
// TARGET
class ParentTarget {
ParentTarget(this.childTarget);
final ChildTarget childTarget;
}
class ChildTarget {
ChildTarget(this.property);
final String property;
}
// SOURCE
class ParentSource {
ParentSource(this.childSource);
final ChildSource childSource;
}
class ChildSource {
ChildSource(this.property);
final String property;
}
Mappers
@Mapper()
abstract class ChildMapper {
@Mapping(source: 'childSource', target: 'childTarget')
ChildTarget toChildTarget(ChildSource model);
}
@Mapper(uses: [ChildMapper])
abstract class ParentMapper {
ParentTarget toParentTarget(ParentSource model);
}
The generated code should be something like down below.
class ParentMapperImpl extends ParentMapper {
final ChildMapper childMapper;
ParentMapperImpl({
required this.childMapper,
}) : super();
ParentTarget toParentTarget(ParentSource model) {
final parentTarget = ParentTarget(childMapper.toChildTarget(model.childSource));
return parentTarget;
}
}
Hi,
this library looks great! What about implementing the
usesfeature in the@Mapperannotation?https://mapstruct.org/documentation/dev/reference/html/#_advanced_mapping_options
Using this flag, developers can reduce the code duplication to map existing objects, by plugging other mappers into the parent one.
Example
Entities
Mappers
The generated code should be something like down below.