67 lines
1.9 KiB
TypeScript
67 lines
1.9 KiB
TypeScript
import { Handlers } from "$fresh/server.ts";
|
|
import { db } from "../../../../databases/db.ts";
|
|
import { ueModules } from "../../../../databases/schema.ts";
|
|
import { and, eq } from "npm:drizzle-orm@0.45.2";
|
|
|
|
export const handler: Handlers = {
|
|
// #37 GET /ue-modules
|
|
async GET(request) {
|
|
try {
|
|
const url = new URL(request.url);
|
|
const idPromo = url.searchParams.get("idPromo");
|
|
const idUEParam = url.searchParams.get("idUE");
|
|
|
|
const idUE = idUEParam ? parseInt(idUEParam) : null;
|
|
|
|
if (idUEParam && isNaN(idUE!)) {
|
|
return new Response("Paramètre idUE invalide", { status: 400 });
|
|
}
|
|
|
|
const result = await db.select().from(ueModules).where(
|
|
and(
|
|
idPromo ? eq(ueModules.idPromo, idPromo) : undefined,
|
|
idUE ? eq(ueModules.idUE, idUE) : undefined,
|
|
),
|
|
);
|
|
|
|
return new Response(JSON.stringify(result), {
|
|
status: 200,
|
|
headers: { "Content-Type": "application/json" },
|
|
});
|
|
} catch (error) {
|
|
console.error("Error fetching UE-modules:", error);
|
|
return new Response("Failed to fetch data", { status: 500 });
|
|
}
|
|
},
|
|
|
|
// #38 POST /ue-modules
|
|
async POST(request) {
|
|
try {
|
|
const body = await request.json();
|
|
const { idModule, idUE, idPromo, coeff } = body;
|
|
|
|
if (!idModule || !idUE || !idPromo || coeff === undefined) {
|
|
return new Response(
|
|
"Champs 'idModule', 'idUE', 'idPromo' et 'coeff' requis",
|
|
{ status: 400 },
|
|
);
|
|
}
|
|
|
|
const result = await db.insert(ueModules).values({
|
|
idModule,
|
|
idUE,
|
|
idPromo,
|
|
coeff,
|
|
}).returning();
|
|
|
|
return new Response(JSON.stringify(result[0]), {
|
|
status: 201,
|
|
headers: { "Content-Type": "application/json" },
|
|
});
|
|
} catch (error) {
|
|
console.error("Error creating UE-module:", error);
|
|
return new Response("Failed to create UE-module", { status: 500 });
|
|
}
|
|
},
|
|
};
|