From 72649cf58a7d7914065c52e1533281706232162c Mon Sep 17 00:00:00 2001 From: "hugo.pradier2" Date: Tue, 14 May 2024 20:16:07 +0200 Subject: [PATCH] utilisation de fonction (create, insert, update, delete) --- db/database.db | Bin 16384 -> 16384 bytes package.json | 2 +- src/database.ts | 194 +++++++++++++++++++++++++++++++++++++----------- 3 files changed, 150 insertions(+), 46 deletions(-) diff --git a/db/database.db b/db/database.db index b1adfb663fae42d6f46bf54352f17fd7c75038c3..2392cd668b8ac49fd72fdd484abb623f1d75b298 100644 GIT binary patch delta 146 zcmZo@U~Fh$oFL7}HBrWyk!xeZ5`GQ_0R{&C*Zj9O3ksa$Hxg!IWe}I=EG7r7+~J=Xz$wko$jTrt&Y75!o0$hD zxEL5182P_5@PCJ>nII_4!3 Dkk%n! diff --git a/package.json b/package.json index 182ea77..db2a021 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "scripts": { "build": "tsc", "start": "tsx src/server.ts", - "dbb": "tsx src/database.ts" + "db": "tsx src/database.ts" }, "devDependencies": { "@types/bun": "^1.0.4", diff --git a/src/database.ts b/src/database.ts index d4b3eb7..b3654f9 100644 --- a/src/database.ts +++ b/src/database.ts @@ -1,65 +1,169 @@ import sqlite3 from "sqlite3"; import fs from "fs"; +import { sleep } from "bun"; + const dbDirectory = "./db"; const dbFilePath = `${dbDirectory}/database.db`; // Créer le répertoire db s'il n'existe pas -if (!fs.existsSync(dbDirectory)) { - fs.mkdirSync(dbDirectory); +function createDbDirectory() { + if (!fs.existsSync(dbDirectory)) { + fs.mkdirSync(dbDirectory); + } } -// Ouverture de la base de données -let db = new sqlite3.Database( - dbFilePath, - sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE, - (err: Error | null) => { - if (err) console.error(err.message); - } -); +// Ouvrir la base de données +function openDatabase() { + return new sqlite3.Database( + dbFilePath, + sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE, + (err: Error | null) => { + if (err) console.error(err.message); + } + ); +} -// Création de la table registered_user dans la base de données +// Créer la table registered_user dans la base de données +function createRegisteredUserTable(db: sqlite3.Database) { + 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, password TEXT NOT NULL, permissions INTEGER NOT NULL, UNIQUE (login))`; + db.run(tableRegisteredUser, [], function (err) { + if (err) { + return console.error(err.message); + } + console.log("Table créée avec succès"); + }); +} -// Exécution de la requête pour créer la table -db.run(tableRegisteredUser, [], function (err) { - if (err) { - return console.error(err.message); - } - console.log("Table créée avec succès"); -}); +// Insérer un utilisateur dans la table registered_user +function insertUser( + db: sqlite3.Database, + login: string, + password: string, + permissions: number +) { + const insertUserQuery = `INSERT INTO registered_user (login, password, permissions) VALUES (?, ?, ?)`; -// Insertion d'un utilisateur dans la table registered_user + db.run(insertUserQuery, [login, password, permissions], function (err) { + if (err) { + return console.error(err.message); + } + console.log( + `Utilisateur inséré avec succès. ID utilisateur: ${this.lastID}` + ); + }); +} -const insertUser = `INSERT INTO registered_user (login, password, permissions) VALUES ('admin', 'admin', 1)`; +// Modifier le login d'un utilisateur dans la table registered_user +function updateUserLogin(db: sqlite3.Database, id: number, newLogin: string) { + const updateUserLoginQuery = `UPDATE registered_user SET login = ? WHERE id_user = ?`; -// Exécution de la requête pour insérer un utilisateur -db.run(insertUser, [], function (err) { - if (err) { - return console.error(err.message); - } - console.log(`Utilisateur inséré avec succès`); -}); + db.run(updateUserLoginQuery, [newLogin, id], function (err) { + if (err) { + return console.error(err.message); + } + console.log(`Login de l'utilisateur mis à jour avec succès.`); + }); +} -// SELECT de tous les utilisateurs de la table registered_user +// Modifier le mot de passe d'un utilisateur dans la table registered_user +function updateUserPassword( + db: sqlite3.Database, + id: number, + newPassword: string +) { + const updateUserPasswordQuery = `UPDATE registered_user SET password = ? WHERE id_user = ?`; -const selectAllUsers = `SELECT * FROM registered_user`; + db.run(updateUserPasswordQuery, [newPassword, id], function (err) { + if (err) { + return console.error(err.message); + } + console.log(`Mot de passe de l'utilisateur mis à jour avec succès.`); + }); +} -// Exécution de la requête pour sélectionner tous les utilisateurs +function updateUserPermissions( + db: sqlite3.Database, + id: number, + newPermissions: number +) { + const updateUserPermissionsQuery = `UPDATE registered_user SET permissions = ? WHERE id_user = ?`; -db.all(selectAllUsers, [], (err, rows) => { - if (err) { - throw err; - } - rows.forEach((row) => { - console.log(row); + db.run(updateUserPermissionsQuery, [newPermissions, id], function (err) { + if (err) { + return console.error(err.message); + } + console.log(`Permissions de l'utilisateur mises à jour avec succès.`); }); -}); +} -// Fermeture de la base de données -db.close((err) => { - if (err) { - console.error(err.message); - } - console.log("Close the database connection."); -}); +// Supprimer un utilisateur de la table registered_user +function deleteUser(db: sqlite3.Database, id: number) { + const deleteUserQuery = `DELETE FROM registered_user WHERE id_user = ?`; + + db.run(deleteUserQuery, [id], function (err) { + if (err) { + return console.error(err.message); + } + console.log(`Utilisateur supprimé avec succès.`); + }); +} + +// Supprimer tous les utilisateurs de la table registered_user +function deleteAllUsers(db: sqlite3.Database) { + const deleteAllUsersQuery = `DELETE FROM registered_user`; + + db.run(deleteAllUsersQuery, [], function (err) { + if (err) { + return console.error(err.message); + } + console.log(`Tous les utilisateurs ont été supprimés avec succès.`); + }); +} + +// Sélectionner tous les utilisateurs de la table registered_user +function selectAllUsers(db: sqlite3.Database) { + const selectAllUsersQuery = `SELECT * FROM registered_user`; + + db.all(selectAllUsersQuery, [], (err, rows) => { + if (err) { + throw err; + } + rows.forEach((row) => { + console.log(row); + }); + }); +} + +// Fermer la base de données +function closeDatabase(db: sqlite3.Database) { + db.close((err) => { + if (err) { + console.error(err.message); + } + console.log("Fermeture de la connexion à la base de données."); + }); +} + +// Utilisation des fonctions +createDbDirectory(); +const db = openDatabase(); + +createRegisteredUserTable(db); +deleteAllUsers(db); + +insertUser(db, "user1", "password1", 1); + +selectAllUsers(db); + +updateUserLogin(db, 1, "newUser1"); +updateUserPassword(db, 1, "newPassword1"); +updateUserPermissions(db, 1, 2); + +selectAllUsers(db); + +deleteUser(db, 1); + +selectAllUsers(db); + +closeDatabase(db);