123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- 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);
- }
|