@@ -9,16 +9,46 @@ import com.damaba.damaba.domain.promotion.PromotionListItem
99import com.damaba.damaba.domain.user.User
1010import org.mapstruct.Mapper
1111import org.mapstruct.Mapping
12+ import org.mapstruct.Named
1213import org.mapstruct.factory.Mappers
14+ import com.damaba.damaba.controller.region.RegionResponse
15+ import com.damaba.damaba.domain.region.Region
1316
1417@Mapper(uses = [UserMapper ::class , ImageMapper ::class , RegionMapper ::class ])
1518interface PromotionMapper {
19+ @Mapping(
20+ target = " photographyTypes" ,
21+ expression = " java(new java.util.LinkedHashSet<>(promotion.getPhotographyTypes()))"
22+ )
23+ @Mapping(target = " activeRegions" , source = " activeRegions" , qualifiedByName = [" regionsToLinkedHashSet" ])
24+ @Mapping(
25+ target = " hashtags" ,
26+ expression = " java(new java.util.LinkedHashSet<>(promotion.getHashtags()))"
27+ )
1628 fun toPromotionResponse (promotion : Promotion ): PromotionResponse
1729
1830 @Mapping(source = " saved" , target = " isSaved" )
31+ @Mapping(
32+ target = " photographyTypes" ,
33+ expression = " java(new java.util.LinkedHashSet<>(promotionDetail.getPhotographyTypes()))"
34+ )
35+ @Mapping(target = " activeRegions" , source = " activeRegions" , qualifiedByName = [" regionsToLinkedHashSet" ])
36+ @Mapping(
37+ target = " hashtags" ,
38+ expression = " java(new java.util.LinkedHashSet<>(promotionDetail.getHashtags()))"
39+ )
1940 fun toPromotionDetailResponse (promotionDetail : PromotionDetail ): PromotionDetailResponse
2041
2142 @Mapping(source = " saved" , target = " isSaved" )
43+ @Mapping(
44+ target = " photographyTypes" ,
45+ expression = " java(new java.util.LinkedHashSet<>(promotionListItem.getPhotographyTypes()))"
46+ )
47+ @Mapping(target = " activeRegions" , source = " activeRegions" , qualifiedByName = [" regionsToLinkedHashSet" ])
48+ @Mapping(
49+ target = " hashtags" ,
50+ expression = " java(new java.util.LinkedHashSet<>(promotionListItem.getHashtags()))"
51+ )
2252 fun toPromotionListItemResponse (promotionListItem : PromotionListItem ): PromotionListItemResponse
2353
2454 @Mapping(source = " promotion.id" , target = " id" )
@@ -37,6 +67,11 @@ interface PromotionMapper {
3767 isSaved : Boolean ,
3868 ): PromotionListItem
3969
70+ @Named(" regionsToLinkedHashSet" )
71+ fun regionsToLinkedHashSet (regions : Set <Region >): LinkedHashSet <RegionResponse > = regions.stream()
72+ .map { region -> RegionMapper .INSTANCE .toRegionResponse(region) }
73+ .collect(java.util.stream.Collectors .toCollection { LinkedHashSet () })
74+
4075 companion object {
4176 val INSTANCE : PromotionMapper = Mappers .getMapper(PromotionMapper ::class .java)
4277 }
0 commit comments