Spaces:
Sleeping
Sleeping
File size: 1,435 Bytes
05c5ed5 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | import { archiveRepository } from "lib/db/repository";
import { getSession } from "auth/server";
import { z } from "zod";
import { ArchiveCreateSchema } from "app-types/archive";
export async function GET() {
const session = await getSession();
if (!session?.user.id) {
return new Response("Unauthorized", { status: 401 });
}
try {
const archives = await archiveRepository.getArchivesByUserId(
session.user.id,
);
return Response.json(archives);
} catch (error) {
console.error("Failed to fetch archives:", error);
return new Response("Internal Server Error", { status: 500 });
}
}
export async function POST(request: Request) {
const session = await getSession();
if (!session?.user.id) {
return new Response("Unauthorized", { status: 401 });
}
try {
const body = await request.json();
const data = ArchiveCreateSchema.parse(body);
const archive = await archiveRepository.createArchive({
name: data.name,
description: data.description || null,
userId: session.user.id,
});
return Response.json(archive);
} catch (error) {
if (error instanceof z.ZodError) {
return Response.json(
{ error: "Invalid input", details: error.message },
{ status: 400 },
);
}
console.error("Failed to create archive:", error);
return Response.json({ message: "Internal Server Error" }, { status: 500 });
}
}
|