Files
record-app-next/app/api/recordings/route.ts
2025-07-31 17:05:07 +08:00

41 lines
1.2 KiB
TypeScript

import { NextRequest } from "next/server";
import { getServerSession } from "next-auth/next";
import { authOptions } from "@/lib/auth";
import { RecordingService } from "@/lib/services/recording.service";
import { ApiResponseHandler } from "@/lib/utils/api-response";
import { AuthenticationError } from "@/lib/errors/app-error";
export async function GET(request: NextRequest) {
try {
const session = await getServerSession(authOptions);
if (!session?.user?.id) {
throw new AuthenticationError();
}
const { searchParams } = new URL(request.url);
const page = parseInt(searchParams.get("page") || "1");
const limit = parseInt(searchParams.get("limit") || "20");
const skip = (page - 1) * limit;
const recordings = await RecordingService.getRecordingsByUserId(
session.user.id,
{
skip,
take: limit,
orderBy: { createdAt: "desc" },
}
);
// 转换日期格式以匹配前端期望的类型
const formattedRecordings = recordings.map((recording) => ({
...recording,
createdAt: recording.createdAt.toISOString(),
}));
return ApiResponseHandler.success(formattedRecordings);
} catch (error) {
return ApiResponseHandler.error(error as Error);
}
}