實作得獎資訊功能、完成作品預覽/文件上傳功能
This commit is contained in:
37
app/api/admin/competitions/[id]/apps/route.ts
Normal file
37
app/api/admin/competitions/[id]/apps/route.ts
Normal file
@@ -0,0 +1,37 @@
|
||||
// =====================================================
|
||||
// 競賽參賽應用 API
|
||||
// =====================================================
|
||||
|
||||
import { NextRequest, NextResponse } from 'next/server';
|
||||
import { CompetitionService } from '@/lib/services/database-service';
|
||||
|
||||
// 獲取競賽的參賽應用
|
||||
export async function GET(request: NextRequest, { params }: { params: Promise<{ id: string }> }) {
|
||||
try {
|
||||
const { id: competitionId } = await params;
|
||||
|
||||
if (!competitionId) {
|
||||
return NextResponse.json({
|
||||
success: false,
|
||||
message: '缺少競賽ID參數'
|
||||
}, { status: 400 });
|
||||
}
|
||||
|
||||
// 獲取競賽的參賽應用
|
||||
const apps = await CompetitionService.getCompetitionApps(competitionId);
|
||||
|
||||
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 });
|
||||
}
|
||||
}
|
53
app/api/admin/competitions/[id]/award-types/route.ts
Normal file
53
app/api/admin/competitions/[id]/award-types/route.ts
Normal file
@@ -0,0 +1,53 @@
|
||||
// =====================================================
|
||||
// 競賽獎項類型 API
|
||||
// =====================================================
|
||||
|
||||
import { NextRequest, NextResponse } from 'next/server';
|
||||
import { db } from '@/lib/database';
|
||||
|
||||
// 獲取競賽的獎項類型
|
||||
export async function GET(request: NextRequest, { params }: { params: Promise<{ id: string }> }) {
|
||||
try {
|
||||
const { id: competitionId } = await params;
|
||||
|
||||
if (!competitionId) {
|
||||
return NextResponse.json({
|
||||
success: false,
|
||||
message: '缺少競賽ID參數'
|
||||
}, { status: 400 });
|
||||
}
|
||||
|
||||
// 獲取競賽的獎項類型
|
||||
const sql = `
|
||||
SELECT
|
||||
id,
|
||||
competition_id,
|
||||
name,
|
||||
description,
|
||||
icon,
|
||||
color,
|
||||
order_index,
|
||||
is_active,
|
||||
created_at
|
||||
FROM competition_award_types
|
||||
WHERE competition_id = ? AND is_active = TRUE
|
||||
ORDER BY order_index ASC, created_at ASC
|
||||
`;
|
||||
|
||||
const awardTypes = await db.query(sql, [competitionId]);
|
||||
|
||||
return NextResponse.json({
|
||||
success: true,
|
||||
message: '獎項類型獲取成功',
|
||||
data: awardTypes
|
||||
});
|
||||
|
||||
} catch (error) {
|
||||
console.error('獲取獎項類型失敗:', error);
|
||||
return NextResponse.json({
|
||||
success: false,
|
||||
message: '獲取獎項類型失敗',
|
||||
error: error instanceof Error ? error.message : '未知錯誤'
|
||||
}, { status: 500 });
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user