// ===================================================== // 測試資料庫關閉機制 API // ===================================================== import { NextRequest, NextResponse } from 'next/server'; import { dbShutdownManager } from '@/lib/database-shutdown-manager'; export async function GET(request: NextRequest) { try { const { searchParams } = new URL(request.url); const action = searchParams.get('action') || 'status'; switch (action) { case 'status': // 獲取關閉狀態 const status = dbShutdownManager.getShutdownStatus(); return NextResponse.json({ success: true, message: '關閉狀態查詢成功', data: status }); case 'test': // 測試關閉機制(不會真的關閉) console.log('🧪 測試關閉機制...'); const testStatus = dbShutdownManager.getShutdownStatus(); return NextResponse.json({ success: true, message: '關閉機制測試成功', data: { ...testStatus, testTime: new Date().toISOString() } }); case 'force': // 強制關閉(僅用於測試) console.log('🚨 執行強制關閉測試...'); dbShutdownManager.forceShutdown(); return NextResponse.json({ success: true, message: '強制關閉測試完成', data: { timestamp: new Date().toISOString() } }); default: return NextResponse.json({ success: false, error: '無效的操作參數', availableActions: ['status', 'test', 'force'] }, { status: 400 }); } } catch (error) { console.error('❌ 測試關閉機制時發生錯誤:', error); return NextResponse.json({ success: false, error: '測試失敗', details: error instanceof Error ? error.message : '未知錯誤' }, { status: 500 }); } } export async function POST(request: NextRequest) { try { const body = await request.json(); const { action } = body; switch (action) { case 'graceful': // 優雅關閉(僅用於測試) console.log('🔄 執行優雅關閉測試...'); await dbShutdownManager.gracefulShutdown(); return NextResponse.json({ success: true, message: '優雅關閉測試完成', data: { timestamp: new Date().toISOString() } }); default: return NextResponse.json({ success: false, error: '無效的操作參數', availableActions: ['graceful'] }, { status: 400 }); } } catch (error) { console.error('❌ 執行關閉測試時發生錯誤:', error); return NextResponse.json({ success: false, error: '關閉測試失敗', details: error instanceof Error ? error.message : '未知錯誤' }, { status: 500 }); } }