44 lines
1.4 KiB
TypeScript
44 lines
1.4 KiB
TypeScript
// =====================================================
|
|
// 前台競賽列表 API
|
|
// =====================================================
|
|
|
|
import { NextRequest, NextResponse } from 'next/server';
|
|
import { CompetitionService } from '@/lib/services/database-service';
|
|
|
|
// 獲取所有競賽(前台用)
|
|
export async function GET(request: NextRequest) {
|
|
try {
|
|
const competitions = await CompetitionService.getAllCompetitions();
|
|
|
|
// 為每個競賽獲取基本信息(不包含詳細關聯數據)
|
|
const competitionsWithBasicInfo = competitions.map(competition => ({
|
|
id: competition.id,
|
|
name: competition.name,
|
|
description: competition.description,
|
|
type: competition.type,
|
|
year: competition.year,
|
|
month: competition.month,
|
|
start_date: competition.start_date,
|
|
end_date: competition.end_date,
|
|
status: competition.status,
|
|
is_current: competition.is_current,
|
|
created_at: competition.created_at,
|
|
updated_at: competition.updated_at
|
|
}));
|
|
|
|
return NextResponse.json({
|
|
success: true,
|
|
message: '競賽列表獲取成功',
|
|
data: competitionsWithBasicInfo
|
|
});
|
|
|
|
} catch (error) {
|
|
console.error('獲取競賽列表失敗:', error);
|
|
return NextResponse.json({
|
|
success: false,
|
|
message: '獲取競賽列表失敗',
|
|
error: error instanceof Error ? error.message : '未知錯誤'
|
|
}, { status: 500 });
|
|
}
|
|
}
|