-- 添加订单过期时间字段和复合索引
DO $$
BEGIN
    -- 添加 expires_at 字段（订单过期时间，NULL 表示不过期）
    IF NOT EXISTS (
        SELECT 1 FROM information_schema.columns
        WHERE table_name='tb_order'
        AND column_name='expires_at'
    ) THEN
        ALTER TABLE tb_order ADD COLUMN expires_at TIMESTAMPTZ;
        COMMENT ON COLUMN tb_order.expires_at IS '订单过期时间（NULL表示不过期，待支付订单默认30分钟后过期）';
    END IF;

    -- 创建复合索引：用于定时任务扫描超时待支付订单
    IF NOT EXISTS (
        SELECT 1 FROM pg_indexes
        WHERE tablename='tb_order'
        AND indexname='idx_order_expires'
    ) THEN
        CREATE INDEX idx_order_expires ON tb_order (expires_at, payment_status)
        WHERE expires_at IS NOT NULL AND deleted_at IS NULL;
    END IF;
END
$$;
