-- ========================================
-- 团播机构 v1.0.1 数据库回滚脚本
-- 创建时间: 2025-01-10
-- 说明: 回滚首页弹窗功能和Banner跳转功能的数据库修改
-- 警告: 此操作将删除相关数据，请谨慎执行！
-- ========================================

-- 检查脚本执行环境
PRINT '开始执行 v1.0.1 数据库回滚脚本...'
PRINT '执行时间: ' + CONVERT(VARCHAR, GETDATE(), 120)
PRINT '警告: 此操作将删除相关数据，请确认后继续！'

-- ========================================
-- 1. 删除弹窗链接类型字典数据
-- ========================================
PRINT '正在删除弹窗链接类型字典数据...'

-- 删除字典数据
IF EXISTS (SELECT * FROM sys_dict_data WHERE DictType = 'liveforum_popup_linktype')
BEGIN
    DELETE FROM sys_dict_data WHERE DictType = 'liveforum_popup_linktype';
    PRINT '✓ 删除弹窗链接类型字典数据'
END

-- 删除字典类型
IF EXISTS (SELECT * FROM sys_dict_type WHERE DictType = 'liveforum_popup_linktype')
BEGIN
    DELETE FROM sys_dict_type WHERE DictType = 'liveforum_popup_linktype';
    PRINT '✓ 删除弹窗链接类型字典类型'
END

-- ========================================
-- 2. 删除 Banner 字典中的通知详情选项
-- ========================================
PRINT '正在删除 Banner 字典中的通知详情选项...'

IF EXISTS (SELECT * FROM sys_dict_data WHERE DictType = 'liveforum_banners_linktype' AND DictValue = '4')
BEGIN
    DELETE FROM sys_dict_data WHERE DictType = 'liveforum_banners_linktype' AND DictValue = '4';
    PRINT '✓ 删除 Banner 字典中的通知详情选项'
END

-- ========================================
-- 3. 恢复 T_Banners 表的原始约束
-- ========================================
PRINT '正在恢复 T_Banners 表的原始约束...'

-- 删除新约束
IF EXISTS (SELECT * FROM sys.check_constraints WHERE name = 'CK_T_Banners_LinkType')
BEGIN
    ALTER TABLE T_Banners DROP CONSTRAINT CK_T_Banners_LinkType;
    PRINT '✓ 删除新的 LinkType 约束'
END

-- 恢复原始约束（只支持 1, 2, 3）
ALTER TABLE T_Banners ADD CONSTRAINT CK_T_Banners_LinkType CHECK (LinkType IN (1, 2, 3));
PRINT '✓ 恢复原始 LinkType 约束 (1-帖子详情, 2-外部链接, 3-无链接)'

-- ========================================
-- 4. 删除 T_HomePopups 表
-- ========================================
PRINT '正在删除 T_HomePopups 表...'

-- 删除索引
IF EXISTS (SELECT * FROM sys.indexes WHERE name = 'IX_T_HomePopups_IsActive_StartTime_EndTime')
BEGIN
    DROP INDEX IX_T_HomePopups_IsActive_StartTime_EndTime ON T_HomePopups;
    PRINT '✓ 删除索引 IX_T_HomePopups_IsActive_StartTime_EndTime'
END

IF EXISTS (SELECT * FROM sys.indexes WHERE name = 'IX_T_HomePopups_SortOrder')
BEGIN
    DROP INDEX IX_T_HomePopups_SortOrder ON T_HomePopups;
    PRINT '✓ 删除索引 IX_T_HomePopups_SortOrder'
END

-- 删除表
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'T_HomePopups')
BEGIN
    DROP TABLE T_HomePopups;
    PRINT '✓ 删除 T_HomePopups 表'
END

-- ========================================
-- 5. 验证回滚结果
-- ========================================
PRINT '正在验证回滚结果...'

-- 验证 T_HomePopups 表已删除
IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'T_HomePopups')
    PRINT '✓ T_HomePopups 表删除验证通过'
ELSE
    PRINT '✗ T_HomePopups 表删除验证失败'

-- 验证约束恢复
IF EXISTS (SELECT * FROM sys.check_constraints WHERE name = 'CK_T_Banners_LinkType' AND definition NOT LIKE '%[LinkType]=(4)%')
    PRINT '✓ T_Banners LinkType 约束恢复验证通过'
ELSE
    PRINT '✗ T_Banners LinkType 约束恢复验证失败'

-- 验证字典数据删除
IF NOT EXISTS (SELECT * FROM sys_dict_type WHERE DictType = 'liveforum_popup_linktype')
    PRINT '✓ 弹窗链接类型字典删除验证通过'
ELSE
    PRINT '✗ 弹窗链接类型字典删除验证失败'

-- ========================================
-- 回滚完成
-- ========================================
PRINT ''
PRINT '========================================='
PRINT 'v1.0.1 数据库回滚脚本执行完成！'
PRINT '完成时间: ' + CONVERT(VARCHAR, GETDATE(), 120)
PRINT '========================================='
PRINT ''
PRINT '回滚内容总结:'
PRINT '1. ✓ 删除首页弹窗表 T_HomePopups'
PRINT '2. ✓ 删除相关索引'
PRINT '3. ✓ 恢复 T_Banners 表原始约束'
PRINT '4. ✓ 删除弹窗链接类型字典'
PRINT '5. ✓ 删除 Banner 字典中的通知详情选项'
PRINT ''
PRINT '注意事项:'
PRINT '- 数据库已回滚到 v1.0.1 之前的状态'
PRINT '- 请确保应用程序代码也同步回滚'
PRINT '- 所有相关的弹窗数据已被删除'
PRINT '========================================='