-- 迁移文件: 009_change_price_id_to_integer.sql
-- 描述: 将price_id从VARCHAR改为INTEGER类型

-- ============================================
-- 正向迁移
-- ============================================

-- 1. 删除外键约束
ALTER TABLE aigcspace.models DROP CONSTRAINT IF EXISTS fk_models_price_id;
ALTER TABLE aigcspace.model_price_tier DROP CONSTRAINT IF EXISTS fk_price_tier_price_id;

-- 2. 删除唯一约束和索引
ALTER TABLE aigcspace.model_price DROP CONSTRAINT IF EXISTS uk_model_price_price_id;
DROP INDEX IF EXISTS aigcspace.idx_model_price_price_id;
DROP INDEX IF EXISTS aigcspace.idx_models_price_id;
DROP INDEX IF EXISTS aigcspace.idx_price_tier_price_id;

-- 3. 清空数据（重新导入）
TRUNCATE TABLE aigcspace.model_price_tier;
TRUNCATE TABLE aigcspace.model_price CASCADE;
UPDATE aigcspace.models SET price_id = NULL;

-- 4. 修改 model_price.price_id 为 INTEGER
ALTER TABLE aigcspace.model_price DROP COLUMN IF EXISTS price_id;
ALTER TABLE aigcspace.model_price ADD COLUMN price_id INTEGER;
COMMENT ON COLUMN aigcspace.model_price.price_id IS '价格业务ID（数字）';

-- 5. 修改 model_price_tier.price_id 为 INTEGER
ALTER TABLE aigcspace.model_price_tier DROP COLUMN IF EXISTS price_id;
ALTER TABLE aigcspace.model_price_tier ADD COLUMN price_id INTEGER;
COMMENT ON COLUMN aigcspace.model_price_tier.price_id IS '价格业务ID，关联model_price.price_id';

-- 6. 修改 models.price_id 为 INTEGER
ALTER TABLE aigcspace.models DROP COLUMN IF EXISTS price_id;
ALTER TABLE aigcspace.models ADD COLUMN price_id INTEGER;
COMMENT ON COLUMN aigcspace.models.price_id IS '价格业务ID，关联model_price.price_id';

-- 7. 添加唯一约束
ALTER TABLE aigcspace.model_price ADD CONSTRAINT uk_model_price_price_id UNIQUE (price_id);

-- 8. 添加外键约束
ALTER TABLE aigcspace.models ADD CONSTRAINT fk_models_price_id
    FOREIGN KEY (price_id) REFERENCES aigcspace.model_price(price_id) ON DELETE SET NULL;
ALTER TABLE aigcspace.model_price_tier ADD CONSTRAINT fk_price_tier_price_id
    FOREIGN KEY (price_id) REFERENCES aigcspace.model_price(price_id) ON DELETE CASCADE;

-- 9. 创建索引
CREATE INDEX idx_model_price_price_id ON aigcspace.model_price(price_id);
CREATE INDEX idx_models_price_id ON aigcspace.models(price_id);
CREATE INDEX idx_price_tier_price_id ON aigcspace.model_price_tier(price_id);

-- ============================================
-- 回滚迁移
-- ============================================
-- 略
