package com.tasteby.service;

import com.tasteby.domain.Channel;
import com.tasteby.mapper.ChannelMapper;
import com.tasteby.util.IdGenerator;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class ChannelService {

    private final ChannelMapper mapper;

    public ChannelService(ChannelMapper mapper) {
        this.mapper = mapper;
    }

    public List<Channel> findAllActive() {
        return mapper.findAllActive();
    }

    public String create(String channelId, String channelName, String titleFilter) {
        String id = IdGenerator.newId();
        mapper.insert(id, channelId, channelName, titleFilter);
        return id;
    }

    public boolean deactivate(String channelId) {
        if (channelId == null || channelId.isBlank()) return false;
        // #295 — 입력 형식으로 명시적 분기:
        //   "UC..."(24 chars) 형식 → YouTube channel_id로 비활성화
        //   그 외(32-char hex UUID 등) → DB id로 비활성화
        // 이전: channel_id 시도 → 0이면 id 시도. 우연히 UC가 hex와 같을 확률은 0이지만
        // 가독성/의도 명확성 + 잘못된 폴백 차단을 위해 명시화.
        boolean looksLikeYouTubeId = channelId.startsWith("UC") && channelId.length() == 24;
        int rows = looksLikeYouTubeId
                ? mapper.deactivateByChannelId(channelId)
                : mapper.deactivateById(channelId);
        return rows > 0;
    }

    public Channel findByChannelId(String channelId) {
        return mapper.findByChannelId(channelId);
    }

    public void update(String id, String description, String tags, Integer sortOrder) {
        mapper.updateChannel(id, description, tags, sortOrder);
    }
}
