From 2e3571b873085ec22140637dc25b5cf4f5c5a19d Mon Sep 17 00:00:00 2001 From: cofrizot Date: Tue, 28 May 2024 16:12:27 +0200 Subject: [PATCH] Add an email to User and title, date to Work --- src/database.ts | 44 ++++++++++++++++++++++++++++++++++++++------ src/server.ts | 34 ++++++++++++++++++++++++++++++---- 2 files changed, 68 insertions(+), 10 deletions(-) diff --git a/src/database.ts b/src/database.ts index 3aa61be..35bc500 100644 --- a/src/database.ts +++ b/src/database.ts @@ -98,6 +98,7 @@ export function createTables(db: sqlite3.Database) { // CREATE TABLE registered_user ( // id_user SERIAL PRIMARY KEY, // login VARCHAR(64) NOT NULL, +// email VARCHAR(64) NOT NULL, // password VARCHAR(72) NOT NULL, // permissions INT NOT NULL, // UNIQUE (login) @@ -105,8 +106,20 @@ export function createTables(db: sqlite3.Database) { /* Créer la table registered_user dans la base de données */ export function createRegisteredUserTable(db: sqlite3.Database): Promise { +<<<<<<< HEAD const tableRegisteredUser = `CREATE TABLE IF NOT EXISTS registered_user (id_user INTEGER PRIMARY KEY AUTOINCREMENT, login TEXT NOT NULL, password TEXT NOT NULL, permissions INTEGER NOT NULL, UNIQUE (login))`; +||||||| parent of a9651ed (Add an email to User and title, date to Work) + const tableRegisteredUser = `CREATE TABLE IF NOT EXISTS registered_user (id_user INTEGER PRIMARY KEY AUTOINCREMENT, login TEXT NOT NULL, password TEXT NOT NULL, permissions INTEGER NOT NULL, UNIQUE (login))`; +======= + const tableRegisteredUser = `CREATE TABLE IF NOT EXISTS registered_user ( + id_user INTEGER PRIMARY KEY AUTOINCREMENT, + login TEXT NOT NULL, + email TEXT NOT NULL, + password TEXT NOT NULL, + permissions INTEGER NOT NULL, + UNIQUE (login))`; +>>>>>>> a9651ed (Add an email to User and title, date to Work) return runDB(db, tableRegisteredUser, []); } @@ -115,12 +128,13 @@ export function createRegisteredUserTable(db: sqlite3.Database): Promise { export function insertUser( db: sqlite3.Database, login: string, + email: string, password: string, permissions: number, ) { - const insertUserQuery = `INSERT INTO registered_user (login, password, permissions) VALUES (?, ?, ?)`; + const insertUserQuery = `INSERT INTO registered_user (login, email, password, permissions) VALUES (?, ?, ?, ?)`; - return runDB(db, insertUserQuery, [login, password, permissions]); + return runDB(db, insertUserQuery, [login, email, password, permissions]); } /* Modifier le login d'un utilisateur dans la table registered_user */ @@ -156,6 +170,15 @@ export function updateUserPermissions( return runDB(db, updateUserPermissionsQuery, [newPermissions, id]); } +export function updateUserEmail( + db: sqlite3.Database, + id: number, + newEmail: string +) { + const updateUserEmailQuery = `UPDATE registered_user SET email = ? WHERE id_user = ?`; + return runDB(db, updateUserEmailQuery, [newEmail, id]); +} + /* Supprimer un utilisateur de la table registered_user par son ID */ export function deleteUserById(db: sqlite3.Database, id: number) { const deleteUserQuery = `DELETE FROM registered_user WHERE id_user = ?`; @@ -279,13 +302,20 @@ export function selectLanguageById(db: sqlite3.Database, id: number) { // link CHAR(36) NOT NULL, // user_id INT REFERENCES registered_user(id_user), // language_id INT NOT NULL REFERENCES language(id_language) +// title VARCHAR(30) NOT NULL, // content TEXT NOT NULL, +// date TIMESTAMP DEFAULT CURRENT_TIMESTAMP // ); /* Créer la table work dans la base de données */ export function createWorkTable(db: sqlite3.Database): Promise { - const tableWork = - `CREATE TABLE IF NOT EXISTS work (id_work INTEGER PRIMARY KEY AUTOINCREMENT, link CHAR(36) NOT NULL, user_id INTEGER REFERENCES registered_user(id_user), language_id INTEGER NOT NULL REFERENCES language(id_language), content TEXT NOT NULL)`; + const tableWork = `CREATE TABLE IF NOT EXISTS work ( + id_work INTEGER PRIMARY KEY AUTOINCREMENT, + link CHAR(36) NOT NULL, user_id INTEGER REFERENCES registered_user(id_user), + language_id INTEGER NOT NULL REFERENCES language(id_language), + title TEXT NOT NULL, + content TEXT NOT NULL, + date TIMESTAMP DEFAULT CURRENT_TIMESTAMP)`; return runDB(db, tableWork, []); } @@ -295,11 +325,13 @@ export function insertWork( link: string, user_id: number, language_id: number, + title: string, content: string, + date: string ) { - const insertWorkQuery = `INSERT INTO work (link, user_id, language_id, content) VALUES (?, ?, ?, ?)`; + const insertWorkQuery = `INSERT INTO work (link, user_id, language_id, title, content, date) VALUES (?, ?, ?, ?, ?, ?)`; - return runDB(db, insertWorkQuery, [link, user_id, language_id, content]); + return runDB(db, insertWorkQuery, [link, user_id, language_id, title, content, date]); } /* Sélectionner tous les works de la table work */ diff --git a/src/server.ts b/src/server.ts index 51d8de6..b89c714 100644 --- a/src/server.ts +++ b/src/server.ts @@ -161,14 +161,15 @@ fastify.post( schema: { body: Type.Object({ login: Type.String(), + email: Type.String(), password: Type.String(), permissions: Type.Number(), }), }, }, async (request, reply) => { - const { login, password, permissions } = request.body; - db.insertUser(database, login, password, permissions); + const { login, email, password, permissions } = request.body; + db.insertUser(database, login, email, password, permissions); reply.send({ success: true }); }, ); @@ -242,6 +243,29 @@ fastify.put( }, ); +/* Route pour mettre à jour l'email d'un utilisateur */ +fastify.put( + "/users/:id/email", + { + schema: { + params: Type.Object({ + id: Type.Number({ + minimum: 0, + }), + }), + body: Type.Object({ + newEmail: Type.String(), + }), + }, + }, + async (request, reply) => { + const { id } = request.params; + const { newEmail } = request.body; + await db.updateUserEmail(database, id, newEmail); + reply.send({ success: true }); + } +); + /* Route pour supprimer un utilisateur par son ID */ fastify.delete( "/users/:id", @@ -449,13 +473,15 @@ fastify.post( id_user: Type.Number(), link: Type.String(), id_language: Type.Number(), + title: Type.String(), code: Type.String(), + date: Type.String(), }), }, }, async (request, reply) => { - const { id_user, link, id_language, code } = request.body; - db.insertWork(database, link, id_user, id_language, code); + const { id_user, link, id_language, title, code, date } = request.body; + db.insertWork(database, link, id_user, id_language, title, code, date); reply.send({ success: true }); }, );