import dbConnect from "../../lib/dbConnect"; import Activity from "../../models/Activity"; import { NextResponse } from "next/server"; import { setCORSHeaders, handleError } from "../../lib/apiUtils"; export async function GET(request) { await dbConnect(); console.log("GET request received"); try { const isFromFrontend = request.headers.get("x-from-frontend") === "true"; console.log("isFromFrontend", isFromFrontend); let activities; let message; if (isFromFrontend) { activities = await Activity.find({ isActive: true }).sort({ createdAt: -1, }); message = activities.length > 0 ? "成功获取活跃活动" : "当前没有活跃活动"; } else { // 其他请求,返回所有记录 activities = await Activity.find().sort({ createdAt: -1 }); message = activities.length > 0 ? "成功获取所有活动" : "当前没有任何活动"; } const response = NextResponse.json( { success: true, data: activities, message, total: activities.length, }, { status: 200 } ); return setCORSHeaders(response); } catch (error) { console.error("Error in GET /api/activity:", error); return handleError(error); } } export async function POST(request) { await dbConnect(); try { const activityData = await request.json(); console.log("activityData", activityData); const activity = await Activity.create(activityData); const response = NextResponse.json( { success: true, message: "Activity created successfully", data: activity, }, { status: 201 } ); return setCORSHeaders(response); } catch (error) { console.error("Error creating activity:", error); return handleError(error); } } export async function PUT(request) { await dbConnect(); try { const { id, ...updateData } = await request.json(); console.log("Updating activity with id:", id); console.log("Update data:", updateData); if (!id) { return setCORSHeaders( NextResponse.json( { success: false, error: "Activity ID is required" }, { status: 400 } ) ); } const updatedActivity = await Activity.findByIdAndUpdate(id, updateData, { new: true, runValidators: true, }); if (!updatedActivity) { return setCORSHeaders( NextResponse.json( { success: false, error: "Activity not found" }, { status: 404 } ) ); } const response = NextResponse.json( { success: true, data: updatedActivity, message: "Activity updated successfully", }, { status: 200 } ); return setCORSHeaders(response); } catch (error) { console.error("Error updating activity:", error); return handleError(error); } } export async function DELETE(request) { await dbConnect(); try { const { searchParams } = new URL(request.url); const id = searchParams.get("id"); const deletedActivity = await Activity.findByIdAndDelete(id); if (!deletedActivity) { return NextResponse.json( { success: false, error: "Activity not found" }, { status: 404 } ); } const response = NextResponse.json( { success: true, message: "Activity deleted successfully" }, { status: 200 } ); return setCORSHeaders(response); } catch (error) { console.error("Error deleting activity:", error); return handleError(error); } } export async function OPTIONS() { const response = new NextResponse(null, { status: 204 }); return setCORSHeaders(response); }