From aa0516dc728a70c015515f5fe249c3e88346697c Mon Sep 17 00:00:00 2001 From: "matis.mazingue" Date: Tue, 11 Jun 2024 17:07:20 +0200 Subject: [PATCH] selectWorkById et selectLastWorkByUserId --- src/database.ts | 35 +++++++++++++++++++++++++++-------- src/server.ts | 19 +++++++++++++++++++ 2 files changed, 46 insertions(+), 8 deletions(-) diff --git a/src/database.ts b/src/database.ts index 7aa6704..dd1f6fb 100644 --- a/src/database.ts +++ b/src/database.ts @@ -27,9 +27,10 @@ export function runDB( export function allDB( db: sqlite3.Database, query: string, + params?: any[] ): Promise { return new Promise((resolve, reject) => { - db.all(query, (err, rows) => { + db.all(query, params, (err, rows) => { if (err) { reject(err); } else { @@ -333,6 +334,31 @@ export function selectAllWorks(db: sqlite3.Database): Promise { return allDB(db, selectAllWorksQuery); } +/* Sélectionner tous les works de la table work */ +export function selectWorksByUserId(db: sqlite3.Database, user_id: number): Promise { + const selectWorksByUserIdQuery = `SELECT * FROM work + WHERE user_id = ?`; + + return allDB(db, selectWorksByUserIdQuery, [user_id]); +} + +/* Sélectionner un work par son ID */ +export function selectWorkById(db: sqlite3.Database, id: number) { + const selectWorkByIdQuery = `SELECT * FROM work WHERE id_work = ?`; + + return getDB(db, selectWorkByIdQuery, [id]); +} + +/* Sélectionner le dernier work par l'id de l'utilisateur */ +export function selectLastWorkByUserId(db: sqlite3.Database, user_id: number) { + const selectLastWorkByUserIdQuery = `SELECT * FROM work + WHERE user_id = ? + ORDER BY date DESC + LIMIT 1`; + + return getDB(db, selectLastWorkByUserIdQuery, [user_id]); +} + /* Supprimer tous les works de la table work */ export function deleteAllWorks(db: sqlite3.Database) { const deleteAllWorksQuery = `DELETE FROM work`; @@ -347,13 +373,6 @@ export function deleteWork(db: sqlite3.Database, id: number) { return runDB(db, deleteWorkQuery, [id]); } -/* Sélectionner un work par son ID */ -export function selectWorkById(db: sqlite3.Database, id: number) { - const selectWorkByIdQuery = `SELECT * FROM work WHERE id_work = ?`; - - return getDB(db, selectWorkByIdQuery, [id]); -} - /* Update the work title by its ID */ export function updateWorkTitle( db: sqlite3.Database, diff --git a/src/server.ts b/src/server.ts index eb92b16..a685276 100644 --- a/src/server.ts +++ b/src/server.ts @@ -542,6 +542,25 @@ fastify.get( }, ); +/* Route pour récupérer un work par l'id de l'utilisateur */ +fastify.get( + "/works/user/:user_id", + { + schema: { + params: Type.Object({ + user_id: Type.Number({ + minimum: 0, + }), + }), + }, + }, + async (request, reply) => { + const { user_id } = request.params; + const work = await db.selectLastWorkByUserId(database, user_id); + reply.send(work); + }, +); + /* Update the work title by its ID */ fastify.put( "/works/:id/title",