SubscriptionResponse.java
package com.newbit.subscription.dto.response;
import java.time.LocalDateTime;
import com.newbit.subscription.entity.Subscription;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
@Getter
@Builder
@AllArgsConstructor
@Schema(description = "시리즈 구독 응답")
public class SubscriptionResponse {
@Schema(description = "시리즈 ID", example = "42")
private Long seriesId;
@Schema(description = "사용자 ID", example = "15")
private Long userId;
@Schema(description = "구독 상태 (true: 구독중, false: 구독취소)", example = "true")
private boolean subscribed;
@Schema(description = "구독 시작 시간", example = "2023-08-15T14:30:15")
private LocalDateTime createdAt;
@Schema(description = "상태 변경 시간", example = "2023-08-15T14:30:15")
private LocalDateTime updatedAt;
public static SubscriptionResponse from(Subscription subscription) {
return SubscriptionResponse.builder()
.seriesId(subscription.getSeriesId())
.userId(subscription.getUserId())
.subscribed(true)
.createdAt(subscription.getCreatedAt())
.updatedAt(subscription.getUpdatedAt())
.build();
}
public static SubscriptionResponse canceledSubscription(Long seriesId, Long userId) {
return SubscriptionResponse.builder()
.seriesId(seriesId)
.userId(userId)
.subscribed(false)
.build();
}
}