-- ========================================
-- 钱包和标签系统多租户改造 - 回滚脚本
-- 变更 ID: fix-wallet-tag-multi-tenant
-- ========================================

-- ========================================
-- 第 1 步：恢复钱包表
-- ========================================

DROP TABLE IF EXISTS tb_wallet CASCADE;

CREATE TABLE tb_wallet AS SELECT * FROM tb_wallet_backup;

-- ========================================
-- 第 2 步：恢复标签表
-- ========================================

ALTER TABLE tb_tag DROP COLUMN IF EXISTS enterprise_id CASCADE;
ALTER TABLE tb_tag DROP COLUMN IF EXISTS shop_id CASCADE;

DROP INDEX IF EXISTS idx_tag_enterprise;
DROP INDEX IF EXISTS idx_tag_shop;
DROP INDEX IF EXISTS idx_tag_enterprise_name;
DROP INDEX IF EXISTS idx_tag_shop_name;
DROP INDEX IF EXISTS idx_tag_global_name;

CREATE UNIQUE INDEX idx_tag_name ON tb_tag (name) WHERE deleted_at IS NULL;

-- ========================================
-- 第 3 步：恢复资源标签表
-- ========================================

ALTER TABLE tb_resource_tag DROP COLUMN IF EXISTS enterprise_id CASCADE;
ALTER TABLE tb_resource_tag DROP COLUMN IF EXISTS shop_id CASCADE;

DROP INDEX IF EXISTS idx_resource_tag_enterprise;
DROP INDEX IF EXISTS idx_resource_tag_shop;

-- ========================================
-- 第 4 步：验证回滚结果
-- ========================================

DO $$
DECLARE
    wallet_count INTEGER;
    tag_has_enterprise BOOLEAN;
    tag_has_shop BOOLEAN;
BEGIN
    SELECT COUNT(*) INTO wallet_count FROM tb_wallet;
    
    SELECT EXISTS (
        SELECT 1 FROM information_schema.columns 
        WHERE table_name = 'tb_tag' AND column_name = 'enterprise_id'
    ) INTO tag_has_enterprise;
    
    SELECT EXISTS (
        SELECT 1 FROM information_schema.columns 
        WHERE table_name = 'tb_tag' AND column_name = 'shop_id'
    ) INTO tag_has_shop;
    
    RAISE NOTICE '========================================';
    RAISE NOTICE '回滚验证:';
    RAISE NOTICE '  钱包记录数: %', wallet_count;
    RAISE NOTICE '  标签表 enterprise_id 字段存在: %', tag_has_enterprise;
    RAISE NOTICE '  标签表 shop_id 字段存在: %', tag_has_shop;
    RAISE NOTICE '========================================';
    
    IF tag_has_enterprise OR tag_has_shop THEN
        RAISE WARNING '标签表字段未完全删除，请检查';
    END IF;
END $$;

-- ========================================
-- 第 5 步：清理备份表（可选，建议手动执行）
-- ========================================

-- DROP TABLE IF EXISTS tb_wallet_backup;
-- DROP TABLE IF EXISTS tb_tag_backup;
-- DROP TABLE IF EXISTS tb_resource_tag_backup;

-- ========================================
-- 回滚完成
-- ========================================
