新增資料庫架構
This commit is contained in:
134
scripts/clear-all-data.sql
Normal file
134
scripts/clear-all-data.sql
Normal file
@@ -0,0 +1,134 @@
|
||||
-- 心願星河 - 清空所有數據
|
||||
-- ⚠️ 警告:此腳本將永久刪除所有數據,請謹慎使用!
|
||||
-- 建議:在生產環境執行前請備份重要數據
|
||||
|
||||
-- 開始事務
|
||||
BEGIN;
|
||||
|
||||
-- 0. 修復 migration_log 表約束問題
|
||||
DO $$
|
||||
BEGIN
|
||||
-- 移除舊的約束
|
||||
ALTER TABLE migration_log DROP CONSTRAINT IF EXISTS migration_log_migration_type_check;
|
||||
|
||||
-- 添加新的約束,包含所有需要的類型
|
||||
ALTER TABLE migration_log ADD CONSTRAINT migration_log_migration_type_check
|
||||
CHECK (migration_type IN ('wishes', 'likes', 'settings', 'storage_cleanup', 'data_cleanup', 'image_cleanup'));
|
||||
|
||||
RAISE NOTICE '🔧 migration_log 表約束已修復';
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
RAISE NOTICE '⚠️ 修復約束時發生錯誤,但繼續執行: %', SQLERRM;
|
||||
END $$;
|
||||
|
||||
-- 顯示警告訊息
|
||||
DO $$
|
||||
BEGIN
|
||||
RAISE NOTICE '';
|
||||
RAISE NOTICE '🚨 準備清空所有數據...';
|
||||
RAISE NOTICE '⚠️ 這將永久刪除:';
|
||||
RAISE NOTICE ' - 所有困擾案例 (wishes)';
|
||||
RAISE NOTICE ' - 所有點讚記錄 (wish_likes)';
|
||||
RAISE NOTICE ' - 所有用戶設定 (user_settings)';
|
||||
RAISE NOTICE ' - 遷移記錄 (migration_log)';
|
||||
RAISE NOTICE ' - 系統統計 (system_stats)';
|
||||
RAISE NOTICE ' - 存儲使用記錄 (storage_usage)';
|
||||
RAISE NOTICE ' - 存儲清理記錄 (storage_cleanup_log)';
|
||||
RAISE NOTICE '';
|
||||
END $$;
|
||||
|
||||
-- 1. 清空所有數據表(按依賴關係順序)
|
||||
DO $$
|
||||
DECLARE
|
||||
table_count INTEGER;
|
||||
BEGIN
|
||||
-- 清空有外鍵關係的表格
|
||||
DELETE FROM wish_likes;
|
||||
GET DIAGNOSTICS table_count = ROW_COUNT;
|
||||
RAISE NOTICE '🗑️ 已清空 wish_likes 表,刪除 % 條記錄', table_count;
|
||||
|
||||
DELETE FROM wishes;
|
||||
GET DIAGNOSTICS table_count = ROW_COUNT;
|
||||
RAISE NOTICE '🗑️ 已清空 wishes 表,刪除 % 條記錄', table_count;
|
||||
|
||||
DELETE FROM user_settings;
|
||||
GET DIAGNOSTICS table_count = ROW_COUNT;
|
||||
RAISE NOTICE '🗑️ 已清空 user_settings 表,刪除 % 條記錄', table_count;
|
||||
|
||||
DELETE FROM migration_log;
|
||||
GET DIAGNOSTICS table_count = ROW_COUNT;
|
||||
RAISE NOTICE '🗑️ 已清空 migration_log 表,刪除 % 條記錄', table_count;
|
||||
|
||||
DELETE FROM system_stats;
|
||||
GET DIAGNOSTICS table_count = ROW_COUNT;
|
||||
RAISE NOTICE '🗑️ 已清空 system_stats 表,刪除 % 條記錄', table_count;
|
||||
|
||||
DELETE FROM storage_usage;
|
||||
GET DIAGNOSTICS table_count = ROW_COUNT;
|
||||
RAISE NOTICE '🗑️ 已清空 storage_usage 表,刪除 % 條記錄', table_count;
|
||||
|
||||
DELETE FROM storage_cleanup_log;
|
||||
GET DIAGNOSTICS table_count = ROW_COUNT;
|
||||
RAISE NOTICE '🗑️ 已清空 storage_cleanup_log 表,刪除 % 條記錄', table_count;
|
||||
END $$;
|
||||
|
||||
-- 2. 重置自增序列
|
||||
DO $$
|
||||
BEGIN
|
||||
RAISE NOTICE '';
|
||||
RAISE NOTICE '🔄 重置自增序列...';
|
||||
|
||||
-- 重置所有表格的序列
|
||||
ALTER SEQUENCE wishes_id_seq RESTART WITH 1;
|
||||
ALTER SEQUENCE wish_likes_id_seq RESTART WITH 1;
|
||||
ALTER SEQUENCE user_settings_id_seq RESTART WITH 1;
|
||||
ALTER SEQUENCE migration_log_id_seq RESTART WITH 1;
|
||||
ALTER SEQUENCE system_stats_id_seq RESTART WITH 1;
|
||||
ALTER SEQUENCE storage_usage_id_seq RESTART WITH 1;
|
||||
ALTER SEQUENCE storage_cleanup_log_id_seq RESTART WITH 1;
|
||||
|
||||
RAISE NOTICE '✅ 所有序列已重置為 1';
|
||||
END $$;
|
||||
|
||||
-- 3. 重新插入初始統計記錄
|
||||
INSERT INTO storage_usage (bucket_name, total_files, total_size_bytes)
|
||||
VALUES
|
||||
('wish-images', 0, 0),
|
||||
('wish-thumbnails', 0, 0);
|
||||
|
||||
INSERT INTO system_stats (stat_date, total_wishes, public_wishes, private_wishes, total_likes, active_users, storage_used_mb)
|
||||
VALUES (CURRENT_DATE, 0, 0, 0, 0, 0, 0);
|
||||
|
||||
-- 4. 記錄清空操作
|
||||
INSERT INTO migration_log (
|
||||
user_session,
|
||||
migration_type,
|
||||
target_records,
|
||||
success,
|
||||
error_message
|
||||
) VALUES (
|
||||
'system-admin',
|
||||
'data_cleanup',
|
||||
0,
|
||||
true,
|
||||
'All data cleared by admin request at ' || NOW()
|
||||
);
|
||||
|
||||
-- 提交事務
|
||||
COMMIT;
|
||||
|
||||
-- 顯示完成訊息
|
||||
DO $$
|
||||
BEGIN
|
||||
RAISE NOTICE '';
|
||||
RAISE NOTICE '✅ 資料庫清空完成!';
|
||||
RAISE NOTICE '📊 重置統計:';
|
||||
RAISE NOTICE ' - 所有表格已清空';
|
||||
RAISE NOTICE ' - 自增序列已重置';
|
||||
RAISE NOTICE ' - 初始統計記錄已重新建立';
|
||||
RAISE NOTICE '';
|
||||
RAISE NOTICE '⚠️ 注意:';
|
||||
RAISE NOTICE ' - Storage 中的檔案需要手動清空';
|
||||
RAISE NOTICE ' - 可以使用 clear-storage.js 腳本清空圖片';
|
||||
RAISE NOTICE '';
|
||||
END $$;
|
Reference in New Issue
Block a user