From 4fe64e0601efa8d3bcbbc284e12a0f9952d87899 Mon Sep 17 00:00:00 2001 From: "hugo.pradier2" Date: Thu, 16 May 2024 11:23:57 +0200 Subject: [PATCH] retour json fonctionnel --- package.json | 3 +-- src/database.ts | 67 +++++++++++++++++++++++++++++++++++++++++++------ src/server.ts | 9 +++---- 3 files changed, 64 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index dbeb388..23bfe2a 100644 --- a/package.json +++ b/package.json @@ -4,8 +4,7 @@ "type": "module", "scripts": { "build": "tsc", - "start": "tsx src/server.ts", - "db": "tsx src/database.ts" + "start": "tsx src/server.ts" }, "devDependencies": { "@types/bun": "^1.0.4", diff --git a/src/database.ts b/src/database.ts index 87264df..db7eaab 100644 --- a/src/database.ts +++ b/src/database.ts @@ -4,6 +4,54 @@ import fs from "fs"; const dbDirectory = "./db"; const dbFilePath = `${dbDirectory}/database.db`; +// Fonctions utilitaires pour les requêtes SQL + +function runDB( + db: sqlite3.Database, + query: string, + params: any[] +): Promise { + return new Promise((resolve, reject) => { + db.run(query, params, (err) => { + if (err) { + reject(err); + } else { + resolve(); + } + }); + }); +} + +function allDB(db: sqlite3.Database, query: string): Promise { + return new Promise((resolve, reject) => { + db.all(query, (err, rows) => { + if (err) { + reject(err); + } else { + resolve(rows); + } + }); + }); +} + +function getDB( + db: sqlite3.Database, + query: string, + params: any[] +): Promise { + return new Promise((resolve, reject) => { + db.get(query, params, (err, row) => { + if (err) { + reject(err); + } else { + resolve(); + } + }); + }); +} + +// Fonctions pour la gestion de la base de données + // Créer le répertoire db s'il n'existe pas function createDbDirectory() { if (!fs.existsSync(dbDirectory)) { @@ -140,15 +188,18 @@ function deleteAllUsers(db: sqlite3.Database) { } // Sélectionner tous les utilisateurs de la table registered_user -function selectAllUsers(db: sqlite3.Database) { +function selectAllUsers(db: sqlite3.Database): Promise { const selectAllUsersQuery = `SELECT * FROM registered_user`; - db.all(selectAllUsersQuery, [], (err, rows) => { - console.log("Tous les utilisateurs enregistrés :"); - if (err) { - throw err; - } - rows.forEach((row) => { - console.log(row); + + return new Promise((resolve, reject) => { + db.all(selectAllUsersQuery, (err, rows) => { + if (err) { + reject(err); + } else { + console.log("Utilisateurs :"); + console.log(rows); + resolve(rows); + } }); }); } diff --git a/src/server.ts b/src/server.ts index 379bc19..74d6958 100644 --- a/src/server.ts +++ b/src/server.ts @@ -143,11 +143,10 @@ fastify.delete("/users", async (request, reply) => { deleteAllUsers(db); reply.send({ success: true }); }); - // Route pour récupérer tous les utilisateurs fastify.get("/users", async (request, reply) => { - const users = selectAllUsers(db); - return users; + const users = await selectAllUsers(db); + reply.send(users); }); // Route pour récupérer un utilisateur par son ID @@ -156,7 +155,7 @@ fastify.get<{ }>("/users/:id", async (request, reply) => { const { id } = request.params; const user = selectUserById(db, parseInt(id)); - return user; + reply.send(user); }); // Route pour récupérer un utilisateur par son login @@ -165,7 +164,7 @@ fastify.get<{ }>("/users/login/:login", async (request, reply) => { const { login } = request.params; const user = selectUserByLogin(db, login); - return user; + reply.send(user); }); // Forward output from the runner to the client