Compare commits

..

2 Commits

Author SHA1 Message Date
anys b29b0cd19a feat(api): implement ajustement delete endpoint
- DELETE /ajustements/{numEtud}/{idUE}: remove ajustement from DB
- Requires employee role
- Returns 204 on success
2026-04-23 10:53:39 +02:00
Clément Oudelet 79669d60cf PMPR-38 : POST /ue-modules - associer un module à une UE 2026-04-22 20:40:28 +02:00
2 changed files with 48 additions and 0 deletions
@@ -40,4 +40,30 @@ export const handler: Handlers<null, AuthenticatedState> = {
headers: { "content-type": "application/json" }, headers: { "content-type": "application/json" },
}); });
}, },
// #52 DELETE /ajustements/{numEtud}/{idUE}
async DELETE(
_request: Request,
context: FreshContext<AuthenticatedState>,
): Promise<Response> {
if (context.state.session.eduPersonPrimaryAffiliation !== "employee") {
return FORBIDDEN;
}
const numEtud = Number(context.params.numEtud);
const idUE = Number(context.params.idUE);
if (isNaN(numEtud) || isNaN(idUE)) {
return new Response("Paramètres invalides", { status: 400 });
}
const [deleted] = await db
.delete(ajustements)
.where(eq(ajustements.numEtud, numEtud), eq(ajustements.idUE, idUE))
.returning();
if (!deleted) return NOT_FOUND;
return new Response(null, { status: 204 });
},
}; };
+22
View File
@@ -33,4 +33,26 @@ export const handler: Handlers = {
return new Response("Failed to fetch data", { status: 500 }); 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 });
}
},
}; };