-- ============================================================================
-- 기존 데이터 삭제 및 STATUS 컬럼 제거 (안전한 마이그레이션)
-- 작성일: 2024-12-20
-- 목적: 히스토리 테이블 마이그레이션을 위한 기존 데이터 정리
-- ============================================================================

USE influence;

-- 1. 백업용 테이블 생성 (만약의 경우를 대비)
CREATE TABLE IF NOT EXISTS `VENDOR_INFLUENCER_MAPPING_BACKUP_20241220` AS 
SELECT * FROM `VENDOR_INFLUENCER_MAPPING`;

-- 2. 기존 인덱스 제거 (STATUS 관련)
DROP INDEX IF EXISTS `unique_vendor_influencer_status` ON `VENDOR_INFLUENCER_MAPPING`;
DROP INDEX IF EXISTS `idx_vendor_influencer_status` ON `VENDOR_INFLUENCER_MAPPING`;

-- 3. 기존 데이터 모두 삭제
TRUNCATE TABLE `VENDOR_INFLUENCER_MAPPING`;

-- 4. STATUS 컬럼 제거
ALTER TABLE `VENDOR_INFLUENCER_MAPPING` 
DROP COLUMN IF EXISTS `STATUS`;

-- 5. 새로운 인덱스 생성 (STATUS 없는 구조)
CREATE INDEX `idx_vendor_influencer` ON `VENDOR_INFLUENCER_MAPPING` (`VENDOR_SEQ`, `INFLUENCER_SEQ`);
CREATE INDEX `idx_mapping_type` ON `VENDOR_INFLUENCER_MAPPING` (`REQUEST_TYPE`, `IS_ACT`);
CREATE INDEX `idx_mapping_dates` ON `VENDOR_INFLUENCER_MAPPING` (`REG_DATE`, `MOD_DATE`);

-- 6. 히스토리 테이블 생성 (007 스크립트의 일부분만)
CREATE TABLE IF NOT EXISTS `VENDOR_INFLUENCER_STATUS_HISTORY` (
    `SEQ` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '시퀀스',
    `MAPPING_SEQ` bigint(20) NOT NULL COMMENT '매핑 테이블 시퀀스',
    `STATUS` varchar(20) NOT NULL COMMENT '상태값',
    `PREVIOUS_STATUS` varchar(20) DEFAULT NULL COMMENT '이전 상태값',
    `STATUS_MESSAGE` text DEFAULT NULL COMMENT '상태 변경 메시지',
    `CHANGED_BY` bigint(20) DEFAULT NULL COMMENT '상태 변경자 SEQ',
    `CHANGED_DATE` datetime NOT NULL DEFAULT current_timestamp() COMMENT '상태 변경 일시',
    `IS_CURRENT` char(1) NOT NULL DEFAULT 'Y' COMMENT '현재 상태 여부',
    `REG_DATE` datetime NOT NULL DEFAULT current_timestamp() COMMENT '등록일시',
    PRIMARY KEY (`SEQ`),
    UNIQUE KEY `unique_current_mapping` (`MAPPING_SEQ`, `IS_CURRENT`),
    KEY `idx_mapping_seq` (`MAPPING_SEQ`),
    KEY `idx_status` (`STATUS`),
    KEY `idx_changed_date` (`CHANGED_DATE`),
    KEY `idx_current_status` (`IS_CURRENT`, `STATUS`),
    CONSTRAINT `fk_status_mapping` FOREIGN KEY (`MAPPING_SEQ`) 
        REFERENCES `VENDOR_INFLUENCER_MAPPING` (`SEQ`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='벤더-인플루언서 상태 이력 테이블';

-- 완료 메시지
SELECT 'VENDOR_INFLUENCER_MAPPING 데이터 정리 및 STATUS 컬럼 제거 완료' as message; 