-- 迁移文件: 006_create_price_tier_table.sql
-- 描述: 创建价格阶梯表，支持模型阶梯计费

-- ============================================
-- 正向迁移: 添加 pricing_mode 字段，创建阶梯表
-- ============================================

-- 1. 给 model_price 表添加 pricing_mode 字段
ALTER TABLE aigcspace.model_price ADD COLUMN IF NOT EXISTS pricing_mode VARCHAR(20) DEFAULT 'simple' NOT NULL;

-- 添加字段注释
COMMENT ON COLUMN aigcspace.model_price.pricing_mode IS '计价模式：simple=简单计费, tier=阶梯计费';

-- 2. 创建价格阶梯表
CREATE TABLE IF NOT EXISTS aigcspace.model_price_tier (
    id SERIAL PRIMARY KEY,
    price_id INTEGER NOT NULL,
    tier_min INTEGER DEFAULT 0 NOT NULL,
    tier_max INTEGER,
    input_price NUMERIC(10, 4) NOT NULL,
    output_price NUMERIC(10, 4) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
    CONSTRAINT fk_price_tier_price_id FOREIGN KEY (price_id) 
        REFERENCES aigcspace.model_price(id) ON DELETE CASCADE
);

-- 添加表注释
COMMENT ON TABLE aigcspace.model_price_tier IS '模型价格阶梯表，用于阶梯计费';
COMMENT ON COLUMN aigcspace.model_price_tier.id IS '主键ID';
COMMENT ON COLUMN aigcspace.model_price_tier.price_id IS '关联的价格ID';
COMMENT ON COLUMN aigcspace.model_price_tier.tier_min IS '阶梯起始token数';
COMMENT ON COLUMN aigcspace.model_price_tier.tier_max IS '阶梯结束token数，NULL表示无上限';
COMMENT ON COLUMN aigcspace.model_price_tier.input_price IS '该阶梯输入单价';
COMMENT ON COLUMN aigcspace.model_price_tier.output_price IS '该阶梯输出单价';
COMMENT ON COLUMN aigcspace.model_price_tier.created_at IS '创建时间';
COMMENT ON COLUMN aigcspace.model_price_tier.updated_at IS '更新时间';

-- 创建索引优化查询
CREATE INDEX IF NOT EXISTS idx_price_tier_price_id ON aigcspace.model_price_tier(price_id);

-- ============================================
-- 回滚迁移
-- ============================================
-- DROP TABLE IF EXISTS aigcspace.model_price_tier CASCADE;
-- ALTER TABLE aigcspace.model_price DROP COLUMN IF EXISTS pricing_mode;
