// ===================================================== // 獲取可用應用列表 API // ===================================================== import { NextRequest, NextResponse } from 'next/server'; import { db } from '@/lib/database'; export async function GET(request: NextRequest) { try { const { searchParams } = new URL(request.url); const teamId = searchParams.get('teamId'); // 獲取所有活躍的應用,編輯團隊時顯示所有應用(包括已綁定的) // 與 users 表 JOIN 獲取創建者姓名 let sql = ` SELECT a.id, a.name, a.description, a.category, a.type, a.icon, a.icon_color, a.app_url, a.creator_id, a.team_id, a.created_at as submissionDate, u.name as creator_name FROM apps a LEFT JOIN users u ON a.creator_id = u.id WHERE a.is_active = 1 ORDER BY a.created_at DESC `; const params: any[] = []; const apps = await db.query(sql, params); // 如果沒有結果,嘗試不同的查詢條件 if (apps.length === 0) { // 嘗試 is_active = TRUE const sqlTrue = sql.replace('WHERE a.is_active = 1', 'WHERE a.is_active = TRUE'); const appsTrue = await db.query(sqlTrue, params); // 嘗試 is_active = '1' const sqlString = sql.replace('WHERE a.is_active = 1', 'WHERE a.is_active = "1"'); const appsString = await db.query(sqlString, params); // 嘗試沒有 is_active 條件 const sqlNoFilter = sql.replace('WHERE a.is_active = 1', 'WHERE 1=1'); const appsNoFilter = await db.query(sqlNoFilter, params); // 使用有結果的查詢 if (appsTrue.length > 0) { return NextResponse.json({ success: true, message: '可用應用列表獲取成功', data: appsTrue }); } else if (appsString.length > 0) { return NextResponse.json({ success: true, message: '可用應用列表獲取成功', data: appsString }); } else if (appsNoFilter.length > 0) { return NextResponse.json({ success: true, message: '可用應用列表獲取成功', data: appsNoFilter }); } } return NextResponse.json({ success: true, message: '可用應用列表獲取成功', data: apps }); } catch (error) { console.error('❌ 獲取可用應用列表失敗:', error); return NextResponse.json({ success: false, message: '獲取可用應用列表失敗', error: error instanceof Error ? error.message : '未知錯誤' }, { status: 500 }); } }