ColumnMapper.java
package com.newbit.column.mapper;
import com.newbit.column.domain.Series;
import com.newbit.column.dto.request.CreateColumnRequestDto;
import com.newbit.column.domain.Column;
import com.newbit.column.domain.ColumnRequest;
import com.newbit.column.dto.response.GetMyColumnListResponseDto;
import com.newbit.column.dto.response.GetMyColumnRequestResponseDto;
import com.newbit.column.enums.RequestType;
import com.newbit.user.entity.Mentor;
import org.springframework.stereotype.Component;
@Component
public class ColumnMapper {
public Column toColumn(CreateColumnRequestDto dto, Mentor mentor, Series series) {
return Column.builder()
.title(dto.getTitle())
.content(dto.getContent())
.price(dto.getPrice())
.series(series)
.thumbnailUrl(dto.getThumbnailUrl())
.mentor(mentor)
.isPublic(false)
.likeCount(0)
.build();
}
public ColumnRequest toColumnRequest(CreateColumnRequestDto dto, Column column) {
return ColumnRequest.builder()
.requestType(RequestType.CREATE)
.isApproved(false)
.updatedTitle(dto.getTitle())
.updatedContent(dto.getContent())
.updatedPrice(dto.getPrice())
.updatedThumbnailUrl(dto.getThumbnailUrl())
.column(column)
.build();
}
public GetMyColumnRequestResponseDto toMyColumnRequestResponseDto(ColumnRequest columnRequest) {
Column column = columnRequest.getColumn();
boolean isCreate = columnRequest.getRequestType() == RequestType.CREATE;
return GetMyColumnRequestResponseDto.builder()
.columnRequestId(columnRequest.getColumnRequestId())
.requestType(columnRequest.getRequestType())
.isApproved(columnRequest.getIsApproved())
// CREATE 요청이면 Column 테이블의 값 사용, 아니면 updated 값 사용
.title(isCreate ? column.getTitle() : columnRequest.getUpdatedTitle())
.price(isCreate ? column.getPrice() : columnRequest.getUpdatedPrice())
.thumbnailUrl(isCreate ? column.getThumbnailUrl() : columnRequest.getUpdatedThumbnailUrl())
.createdAt(columnRequest.getCreatedAt())
.build();
}
public GetMyColumnListResponseDto toMyColumnListDto(Column column) {
return GetMyColumnListResponseDto.builder()
.columnId(column.getColumnId())
.title(column.getTitle())
.thumbnailUrl(column.getThumbnailUrl())
.price(column.getPrice())
.likeCount(column.getLikeCount())
.build();
}
}