59 lines
3.1 KiB
SQL
59 lines
3.1 KiB
SQL
-- ===================================================================
|
|
-- social_upload 테이블 생성 마이그레이션
|
|
-- 소셜 미디어 업로드 기록을 저장하는 테이블
|
|
-- 생성일: 2026-02-02
|
|
-- ===================================================================
|
|
|
|
-- social_upload 테이블 생성
|
|
CREATE TABLE IF NOT EXISTS social_upload (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '고유 식별자',
|
|
|
|
-- 관계 필드
|
|
user_uuid VARCHAR(36) NOT NULL COMMENT '사용자 UUID (User.user_uuid 참조)',
|
|
video_id INT NOT NULL COMMENT 'Video 외래키',
|
|
social_account_id INT NOT NULL COMMENT 'SocialAccount 외래키',
|
|
|
|
-- 플랫폼 정보
|
|
platform VARCHAR(20) NOT NULL COMMENT '플랫폼 구분 (youtube, instagram, facebook, tiktok)',
|
|
|
|
-- 업로드 상태
|
|
status VARCHAR(20) NOT NULL DEFAULT 'pending' COMMENT '업로드 상태 (pending, uploading, processing, completed, failed)',
|
|
upload_progress INT NOT NULL DEFAULT 0 COMMENT '업로드 진행률 (0-100)',
|
|
|
|
-- 플랫폼 결과
|
|
platform_video_id VARCHAR(100) NULL COMMENT '플랫폼에서 부여한 영상 ID',
|
|
platform_url VARCHAR(500) NULL COMMENT '플랫폼에서의 영상 URL',
|
|
|
|
-- 메타데이터
|
|
title VARCHAR(200) NOT NULL COMMENT '영상 제목',
|
|
description TEXT NULL COMMENT '영상 설명',
|
|
tags JSON NULL COMMENT '태그 목록 (JSON 배열)',
|
|
privacy_status VARCHAR(20) NOT NULL DEFAULT 'private' COMMENT '공개 상태 (public, unlisted, private)',
|
|
platform_options JSON NULL COMMENT '플랫폼별 추가 옵션 (JSON)',
|
|
|
|
-- 에러 정보
|
|
error_message TEXT NULL COMMENT '에러 메시지 (실패 시)',
|
|
retry_count INT NOT NULL DEFAULT 0 COMMENT '재시도 횟수',
|
|
|
|
-- 시간 정보
|
|
uploaded_at DATETIME NULL COMMENT '업로드 완료 시간',
|
|
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '생성 일시',
|
|
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '수정 일시',
|
|
|
|
-- 외래키 제약조건
|
|
CONSTRAINT fk_social_upload_user FOREIGN KEY (user_uuid) REFERENCES user(user_uuid) ON DELETE CASCADE,
|
|
CONSTRAINT fk_social_upload_video FOREIGN KEY (video_id) REFERENCES video(id) ON DELETE CASCADE,
|
|
CONSTRAINT fk_social_upload_account FOREIGN KEY (social_account_id) REFERENCES social_account(id) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='소셜 미디어 업로드 기록 테이블';
|
|
|
|
-- 인덱스 생성
|
|
CREATE INDEX idx_social_upload_user_uuid ON social_upload(user_uuid);
|
|
CREATE INDEX idx_social_upload_video_id ON social_upload(video_id);
|
|
CREATE INDEX idx_social_upload_social_account_id ON social_upload(social_account_id);
|
|
CREATE INDEX idx_social_upload_platform ON social_upload(platform);
|
|
CREATE INDEX idx_social_upload_status ON social_upload(status);
|
|
CREATE INDEX idx_social_upload_created_at ON social_upload(created_at);
|
|
|
|
-- 유니크 인덱스 (동일 영상 + 동일 계정 조합은 하나만 존재)
|
|
CREATE UNIQUE INDEX uq_social_upload_video_platform ON social_upload(video_id, social_account_id);
|