package com.hlab.yanalyst.domain.channel;
/**
* 등록 채널의 역할.
*
*
* - {@link #MY} — 벤치마킹용 등록 채널. 영상이 수집함으로 들어가 소재 후보가 된다.
* - {@link #OWN} — 내가 운영하는 채널. 이미 발행한 결과물이라 소재가 아니므로
* 수집함·칸반·발굴·피드 어디에도 섞이지 않고 내 채널 분석 화면에서만 쓰인다.
* - {@link #SOURCE} — 소재 원본 채널(웹예능 공식채널). 롱폼만 피드에 수집한다.
* - {@link #RIVAL} — 경쟁 채널(같은 소재를 다루는 클립 채널). 역시 롱폼만 피드에 수집한다.
*
*
* ddl-auto:update 로 컬럼이 추가되므로 기존 행은 role 이 null 이다. null 은 항상 {@link #MY} 로 취급한다.
*/
public final class ChannelRole {
public static final String MY = "MY";
public static final String OWN = "OWN";
public static final String SOURCE = "SOURCE";
public static final String RIVAL = "RIVAL";
private ChannelRole() {}
/** null/공백/미인식 값을 MY 로 보정하고 대문자로 정규화한다. */
public static String normalize(String role) {
if (role == null || role.isBlank()) return MY;
String r = role.trim().toUpperCase();
return switch (r) {
case SOURCE, RIVAL, OWN, MY -> r;
default -> MY;
};
}
/**
* 이 역할의 채널에서 수집한 영상에 붙일 출처(ChannelVideo.source).
* 수집함/발굴 쿼리는 CHANNEL·SEARCH 만 보므로, OWN 은 자동으로 격리된다.
*/
public static String videoSource(String role) {
return OWN.equals(normalize(role)) ? OWN : "CHANNEL";
}
/** 피드(소재 원본/경쟁) 역할인지. */
public static boolean isFeed(String role) {
String r = normalize(role);
return SOURCE.equals(r) || RIVAL.equals(r);
}
}