refactor: use services in routes plz

This commit is contained in:
Julien Froidefond
2025-08-25 08:38:56 +02:00
parent dc06f00342
commit a5e5a75561
8 changed files with 757 additions and 412 deletions

View File

@@ -1,5 +1,5 @@
import { NextRequest, NextResponse } from "next/server";
import { getPool } from "@/services/database";
import { UserService } from "@/services/user-service";
// DELETE - Supprimer complètement un utilisateur
export async function DELETE(
@@ -16,40 +16,20 @@ export async function DELETE(
);
}
const pool = getPool();
// Vérifier que l'utilisateur existe
const userCheck = await pool.query(
"SELECT uuid_id, first_name, last_name FROM users WHERE uuid_id = $1",
[userId]
);
if (userCheck.rows.length === 0) {
return NextResponse.json(
{ error: "Utilisateur non trouvé" },
{ status: 404 }
);
try {
const user = await UserService.deleteUserForAdmin(userId);
return NextResponse.json({
message: `Utilisateur ${user.firstName} ${user.lastName} supprimé avec succès`,
});
} catch (error: any) {
if (error.message === "Utilisateur non trouvé") {
return NextResponse.json({ error: error.message }, { status: 404 });
}
if (error.message.includes("appartient à une équipe")) {
return NextResponse.json({ error: error.message }, { status: 409 });
}
throw error;
}
const user = userCheck.rows[0];
// Vérifier que l'utilisateur n'est pas dans une équipe
if (user.team_id) {
return NextResponse.json(
{
error:
"Impossible de supprimer un utilisateur qui appartient à une équipe. Retirez-le d'abord de son équipe.",
},
{ status: 409 }
);
}
// Supprimer l'utilisateur (les évaluations par skills seront supprimées automatiquement grâce aux contraintes CASCADE)
await pool.query("DELETE FROM users WHERE uuid_id = $1", [userId]);
return NextResponse.json({
message: `Utilisateur ${user.first_name} ${user.last_name} supprimé avec succès`,
});
} catch (error) {
console.error("Error deleting user:", error);
return NextResponse.json(