017_create_voice_clone_table.sql 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. -- 迁移文件: 017_create_voice_clone_table.sql
  2. -- 描述: 创建声音复刻音色表
  3. -- 需求: 5.2, 5.5, 5.6
  4. -- ============================================
  5. -- 正向迁移: 创建表和索引
  6. -- ============================================
  7. -- 创建voice_clone表
  8. CREATE TABLE IF NOT EXISTS voice_clone (
  9. id SERIAL PRIMARY KEY,
  10. user_id VARCHAR(50) NOT NULL,
  11. voice_id VARCHAR(200) NOT NULL UNIQUE,
  12. target_model VARCHAR(100) NOT NULL,
  13. prefix VARCHAR(20) NOT NULL,
  14. status VARCHAR(20) DEFAULT 'DEPLOYING',
  15. audio_url VARCHAR(500),
  16. created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  17. updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  18. CONSTRAINT fk_voice_clone_user FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
  19. );
  20. -- 添加表注释
  21. COMMENT ON TABLE voice_clone IS '声音复刻音色表';
  22. COMMENT ON COLUMN voice_clone.id IS '主键ID';
  23. COMMENT ON COLUMN voice_clone.user_id IS '用户ID(外键关联users表)';
  24. COMMENT ON COLUMN voice_clone.voice_id IS 'DashScope返回的音色ID';
  25. COMMENT ON COLUMN voice_clone.target_model IS '目标TTS模型';
  26. COMMENT ON COLUMN voice_clone.prefix IS '音色前缀名称';
  27. COMMENT ON COLUMN voice_clone.status IS '音色状态(DEPLOYING/DEPLOYED/FAILED)';
  28. COMMENT ON COLUMN voice_clone.audio_url IS '原始音频文件OSS地址';
  29. COMMENT ON COLUMN voice_clone.created_at IS '创建时间';
  30. COMMENT ON COLUMN voice_clone.updated_at IS '更新时间';
  31. -- 创建索引(优化查询性能)
  32. CREATE INDEX IF NOT EXISTS idx_voice_clone_user_id ON voice_clone(user_id);
  33. CREATE INDEX IF NOT EXISTS idx_voice_clone_voice_id ON voice_clone(voice_id);
  34. CREATE INDEX IF NOT EXISTS idx_voice_clone_status ON voice_clone(status);
  35. CREATE INDEX IF NOT EXISTS idx_voice_clone_created_at ON voice_clone(created_at DESC);
  36. -- ============================================
  37. -- 回滚迁移: 删除表和索引
  38. -- ============================================
  39. -- DROP INDEX IF EXISTS idx_voice_clone_created_at;
  40. -- DROP INDEX IF EXISTS idx_voice_clone_status;
  41. -- DROP INDEX IF EXISTS idx_voice_clone_voice_id;
  42. -- DROP INDEX IF EXISTS idx_voice_clone_user_id;
  43. -- DROP TABLE IF EXISTS voice_clone;