@ -4,8 +4,9 @@ import fs from "fs";
const dbDirectory = "./src/db" ;
const dbDirectory = "./src/db" ;
const dbFilePath = ` ${ dbDirectory } /database.db ` ;
const dbFilePath = ` ${ dbDirectory } /database.db ` ;
// Fonctions pour exécuter des requêtes SQL sur la base de données SQLite avec des promesses pour gérer les erreurs et les résultats asynchrones
/* Fonction pour exécuter une requête sur la base de données */
/* Fonction pour exécuter une requête de modification de la base de données (INSERT, UPDATE, DELETE) */
function runDB (
function runDB (
db : sqlite3.Database ,
db : sqlite3.Database ,
query : string ,
query : string ,
@ -22,6 +23,7 @@ function runDB(
} ) ;
} ) ;
}
}
/* Fonction pour récupérer plusieurs lignes de la base de données */
function allDB ( db : sqlite3.Database , query : string ) : Promise < any [ ] > {
function allDB ( db : sqlite3.Database , query : string ) : Promise < any [ ] > {
return new Promise ( ( resolve , reject ) = > {
return new Promise ( ( resolve , reject ) = > {
db . all ( query , ( err , rows ) = > {
db . all ( query , ( err , rows ) = > {
@ -34,6 +36,7 @@ function allDB(db: sqlite3.Database, query: string): Promise<any[]> {
} ) ;
} ) ;
}
}
/* Fonction pour récupérer une seule ligne de la base de données */
function getDB (
function getDB (
db : sqlite3.Database ,
db : sqlite3.Database ,
query : string ,
query : string ,
@ -50,16 +53,16 @@ function getDB(
} ) ;
} ) ;
}
}
// Fonctions pour la gestion de la base de données
/* Fonctions pour la gestion de la base de données */
// Créer le répertoire db s'il n'existe pas
/* Créer le répertoire db s'il n'existe pas */
function createDbDirectory() {
function createDbDirectory() {
if ( ! fs . existsSync ( dbDirectory ) ) {
if ( ! fs . existsSync ( dbDirectory ) ) {
fs . mkdirSync ( dbDirectory ) ;
fs . mkdirSync ( dbDirectory ) ;
}
}
}
}
// Ouvrir la base de données
/* Ouvrir la base de données */
function openDatabase() {
function openDatabase() {
console . log ( "Ouverture de la connexion à la base de données." ) ;
console . log ( "Ouverture de la connexion à la base de données." ) ;
return new sqlite3 . Database (
return new sqlite3 . Database (
@ -71,7 +74,7 @@ function openDatabase() {
) ;
) ;
}
}
// Fermer la base de données
/* Fermer la base de données */
function closeDatabase ( db : sqlite3.Database ) {
function closeDatabase ( db : sqlite3.Database ) {
db . close ( ( err ) = > {
db . close ( ( err ) = > {
if ( err ) {
if ( err ) {
@ -81,7 +84,7 @@ function closeDatabase(db: sqlite3.Database) {
} ) ;
} ) ;
}
}
// Create all the tables in the database
/* Create all the tables in the database */
function createTables ( db : sqlite3.Database ) {
function createTables ( db : sqlite3.Database ) {
createRegisteredUserTable ( db ) ;
createRegisteredUserTable ( db ) ;
createLanguageTable ( db ) ;
createLanguageTable ( db ) ;
@ -97,14 +100,14 @@ function createTables(db: sqlite3.Database) {
// UNIQUE (login)
// UNIQUE (login)
// );
// );
// Créer 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 ) : Promise < void > {
function createRegisteredUserTable ( db : sqlite3.Database ) : Promise < void > {
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)) ` ;
return runDB ( db , tableRegisteredUser , [ ] ) ;
return runDB ( db , tableRegisteredUser , [ ] ) ;
}
}
// Insérer un utilisateur dans la table registered_user
/* Insérer un utilisateur dans la table registered_user */
function insertUser (
function insertUser (
db : sqlite3.Database ,
db : sqlite3.Database ,
login : string ,
login : string ,
@ -116,14 +119,14 @@ function insertUser(
return runDB ( db , insertUserQuery , [ login , password , permissions ] ) ;
return runDB ( db , insertUserQuery , [ login , password , permissions ] ) ;
}
}
// Modifier le login d'un utilisateur dans la table registered_user
/* Modifier le login d'un utilisateur dans la table registered_user */
function updateUserLogin ( db : sqlite3.Database , id : number , newLogin : string ) {
function updateUserLogin ( db : sqlite3.Database , id : number , newLogin : string ) {
const updateUserLoginQuery = ` UPDATE registered_user SET login = ? WHERE id_user = ? ` ;
const updateUserLoginQuery = ` UPDATE registered_user SET login = ? WHERE id_user = ? ` ;
return runDB ( db , updateUserLoginQuery , [ newLogin , id ] ) ;
return runDB ( db , updateUserLoginQuery , [ newLogin , id ] ) ;
}
}
// Modifier le mot de passe d'un utilisateur dans la table registered_user
/* Modifier le mot de passe d'un utilisateur dans la table registered_user */
function updateUserPassword (
function updateUserPassword (
db : sqlite3.Database ,
db : sqlite3.Database ,
id : number ,
id : number ,
@ -134,6 +137,7 @@ function updateUserPassword(
return runDB ( db , updateUserPasswordQuery , [ newPassword , id ] ) ;
return runDB ( db , updateUserPasswordQuery , [ newPassword , id ] ) ;
}
}
/* Modifier les permissions d'un utilisateur dans la table registered_user */
function updateUserPermissions (
function updateUserPermissions (
db : sqlite3.Database ,
db : sqlite3.Database ,
id : number ,
id : number ,
@ -144,35 +148,42 @@ function updateUserPermissions(
return runDB ( db , updateUserPermissionsQuery , [ newPermissions , id ] ) ;
return runDB ( db , updateUserPermissionsQuery , [ newPermissions , id ] ) ;
}
}
// Supprimer un utilisateur de la table registered_user
/* Supprimer un utilisateur de la table registered_user par son ID */
function deleteUser ( db : sqlite3.Database , id : number ) {
function deleteUser ById ( db : sqlite3.Database , id : number ) {
const deleteUserQuery = ` DELETE FROM registered_user WHERE id_user = ? ` ;
const deleteUserQuery = ` DELETE FROM registered_user WHERE id_user = ? ` ;
return runDB ( db , deleteUserQuery , [ id ] ) ;
return runDB ( db , deleteUserQuery , [ id ] ) ;
}
}
// Supprimer tous les utilisateurs de la table registered_user
/* Supprimer un utilisateur de la table registered_user par son login */
function deleteUserByLogin ( db : sqlite3.Database , login : string ) {
const deleteUserQuery = ` DELETE FROM registered_user WHERE login = ? ` ;
return runDB ( db , deleteUserQuery , [ login ] ) ;
}
/* Supprimer tous les utilisateurs de la table registered_user */
function deleteAllUsers ( db : sqlite3.Database ) {
function deleteAllUsers ( db : sqlite3.Database ) {
const deleteAllUsersQuery = ` DELETE FROM registered_user ` ;
const deleteAllUsersQuery = ` DELETE FROM registered_user ` ;
return runDB ( db , deleteAllUsersQuery , [ ] ) ;
return runDB ( db , deleteAllUsersQuery , [ ] ) ;
}
}
// Sélectionner tous les utilisateurs de la table registered_user
/* Sélectionner tous les utilisateurs de la table registered_user */
function selectAllUsers ( db : sqlite3.Database ) : Promise < unknown [ ] > {
function selectAllUsers ( db : sqlite3.Database ) : Promise < unknown [ ] > {
const selectAllUsersQuery = ` SELECT * FROM registered_user ` ;
const selectAllUsersQuery = ` SELECT * FROM registered_user ` ;
return allDB ( db , selectAllUsersQuery ) ;
return allDB ( db , selectAllUsersQuery ) ;
}
}
// Sélectionner un utilisateur par son login
/* Sélectionner un utilisateur par son login */
function selectUserByLogin ( db : sqlite3.Database , login : string ) {
function selectUserByLogin ( db : sqlite3.Database , login : string ) {
const selectUserByLoginQuery = ` SELECT * FROM registered_user WHERE login = ? ` ;
const selectUserByLoginQuery = ` SELECT * FROM registered_user WHERE login = ? ` ;
return getDB ( db , selectUserByLoginQuery , [ login ] ) ;
return getDB ( db , selectUserByLoginQuery , [ login ] ) ;
}
}
// Sélectionner un utilisateur par son ID
/* Sélectionner un utilisateur par son ID */
function selectUserById ( db : sqlite3.Database , id : number ) {
function selectUserById ( db : sqlite3.Database , id : number ) {
const selectUserByIdQuery = ` SELECT * FROM registered_user WHERE id_user = ? ` ;
const selectUserByIdQuery = ` SELECT * FROM registered_user WHERE id_user = ? ` ;
@ -186,13 +197,13 @@ function selectUserById(db: sqlite3.Database, id: number) {
// version INT NOT NULL,
// version INT NOT NULL,
// );
// );
// Créer la table language dans la base de données
/* Créer la table language dans la base de données */
function createLanguageTable ( db : sqlite3.Database ) : Promise < void > {
function createLanguageTable ( db : sqlite3.Database ) : Promise < void > {
const tableLanguage = ` CREATE TABLE IF NOT EXISTS language (id_language INTEGER PRIMARY KEY AUTOINCREMENT, designation TEXT NOT NULL, version INTEGER NOT NULL) ` ;
const tableLanguage = ` CREATE TABLE IF NOT EXISTS language (id_language INTEGER PRIMARY KEY AUTOINCREMENT, designation TEXT NOT NULL, version INTEGER NOT NULL) ` ;
return runDB ( db , tableLanguage , [ ] ) ;
return runDB ( db , tableLanguage , [ ] ) ;
}
}
// Insérer un language dans la table language
/* Insérer un language dans la table language */
function insertLanguage (
function insertLanguage (
db : sqlite3.Database ,
db : sqlite3.Database ,
designation : string ,
designation : string ,
@ -203,14 +214,18 @@ function insertLanguage(
return runDB ( db , insertLanguageQuery , [ designation , version ] ) ;
return runDB ( db , insertLanguageQuery , [ designation , version ] ) ;
}
}
// Modifier la designation d'un language dans la table language
/* Modifier la designation d'un language dans la table language */
function updateLanguageDesignation ( db : sqlite3.Database , id : number , newDesignation : string ) {
function updateLanguageDesignation (
db : sqlite3.Database ,
id : number ,
newDesignation : string
) {
const updateLanguageDesignationQuery = ` UPDATE language SET designation = ? WHERE id_language = ? ` ;
const updateLanguageDesignationQuery = ` UPDATE language SET designation = ? WHERE id_language = ? ` ;
return runDB ( db , updateLanguageDesignationQuery , [ newDesignation , id ] ) ;
return runDB ( db , updateLanguageDesignationQuery , [ newDesignation , id ] ) ;
}
}
// Modifier la version d'un language dans la table language
/* Modifier la version d'un language dans la table language */
function updateLanguageVersion (
function updateLanguageVersion (
db : sqlite3.Database ,
db : sqlite3.Database ,
id : number ,
id : number ,
@ -221,28 +236,28 @@ function updateLanguageVersion(
return runDB ( db , updateLanguageVersionQuery , [ newVersion , id ] ) ;
return runDB ( db , updateLanguageVersionQuery , [ newVersion , id ] ) ;
}
}
// Supprimer un language de la table language
/* Supprimer un language de la table language par son ID */
function deleteLanguage ( db : sqlite3.Database , id : number ) {
function deleteLanguage ( db : sqlite3.Database , id : number ) {
const deleteLanguageQuery = ` DELETE FROM language WHERE id_language = ? ` ;
const deleteLanguageQuery = ` DELETE FROM language WHERE id_language = ? ` ;
return runDB ( db , deleteLanguageQuery , [ id ] ) ;
return runDB ( db , deleteLanguageQuery , [ id ] ) ;
}
}
// Supprimer tous les languages de la table language
/* Supprimer tous les languages de la table language */
function deleteAllLanguages ( db : sqlite3.Database ) {
function deleteAllLanguages ( db : sqlite3.Database ) {
const deleteAllLanguagesQuery = ` DELETE FROM language ` ;
const deleteAllLanguagesQuery = ` DELETE FROM language ` ;
return runDB ( db , deleteAllLanguagesQuery , [ ] ) ;
return runDB ( db , deleteAllLanguagesQuery , [ ] ) ;
}
}
// Sélectionner tous les languages de la table language
/* Sélectionner tous les languages de la table language */
function selectAllLanguages ( db : sqlite3.Database ) : Promise < unknown [ ] > {
function selectAllLanguages ( db : sqlite3.Database ) : Promise < unknown [ ] > {
const selectAllLanguagesQuery = ` SELECT * FROM language ` ;
const selectAllLanguagesQuery = ` SELECT * FROM language ` ;
return allDB ( db , selectAllLanguagesQuery ) ;
return allDB ( db , selectAllLanguagesQuery ) ;
}
}
// Sélectionner un language par son ID
/* Sélectionner un language par son ID */
function selectLanguageById ( db : sqlite3.Database , id : number ) {
function selectLanguageById ( db : sqlite3.Database , id : number ) {
const selectLanguageByIdQuery = ` SELECT * FROM language WHERE id_language = ? ` ;
const selectLanguageByIdQuery = ` SELECT * FROM language WHERE id_language = ? ` ;
@ -252,51 +267,53 @@ function selectLanguageById(db: sqlite3.Database, id: number) {
/////////////////////////// Gestion des works ///////////////////////////
/////////////////////////// Gestion des works ///////////////////////////
// CREATE TABLE work (
// CREATE TABLE work (
// id_work SERIAL PRIMARY KEY,
// id_work SERIAL PRIMARY KEY,
// link CHAR(36) NOT NULL,
// user_id INT REFERENCES registered_user(id_user),
// user_id INT REFERENCES registered_user(id_user),
// language_id INT NOT NULL REFERENCES language(id_language)
// language_id INT NOT NULL REFERENCES language(id_language)
// content TEXT NOT NULL,
// content TEXT NOT NULL,
// );
// );
// Créer la table work dans la base de données
/* Créer la table work dans la base de données */
function createWorkTable ( db : sqlite3.Database ) : Promise < void > {
function createWorkTable ( db : sqlite3.Database ) : Promise < void > {
const tableWork = ` CREATE TABLE IF NOT EXISTS work (id_work INTEGER PRIMARY KEY AUTOINCREMENT, 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), content TEXT NOT NULL)` ;
return runDB ( db , tableWork , [ ] ) ;
return runDB ( db , tableWork , [ ] ) ;
}
}
// Insérer un work dans la table work
/* Insérer un work dans la table work */
function insertWork (
function insertWork (
db : sqlite3.Database ,
db : sqlite3.Database ,
link : string ,
user_id : number ,
user_id : number ,
language_id : number ,
language_id : number ,
content : string
content : string
) {
) {
const insertWorkQuery = ` INSERT INTO work ( user_id, language_id, content) VALUES (?, ?, ?)` ;
const insertWorkQuery = ` INSERT INTO work ( link, user_id, language_id, content) VALUES (?, ?, ?, ?)` ;
return runDB ( db , insertWorkQuery , [ user_id, language_id , content ] ) ;
return runDB ( db , insertWorkQuery , [ link, user_id, language_id , content ] ) ;
}
}
// Sélectionner tous les works de la table work
/* Sélectionner tous les works de la table work */
function selectAllWorks ( db : sqlite3.Database ) : Promise < unknown [ ] > {
function selectAllWorks ( db : sqlite3.Database ) : Promise < unknown [ ] > {
const selectAllWorksQuery = ` SELECT * FROM work ` ;
const selectAllWorksQuery = ` SELECT * FROM work ` ;
return allDB ( db , selectAllWorksQuery ) ;
return allDB ( db , selectAllWorksQuery ) ;
}
}
// Supprimer tous les works de la table work
/* Supprimer tous les works de la table work */
function deleteAllWorks ( db : sqlite3.Database ) {
function deleteAllWorks ( db : sqlite3.Database ) {
const deleteAllWorksQuery = ` DELETE FROM work ` ;
const deleteAllWorksQuery = ` DELETE FROM work ` ;
return runDB ( db , deleteAllWorksQuery , [ ] ) ;
return runDB ( db , deleteAllWorksQuery , [ ] ) ;
}
}
// Supprimer un work de la table work
/* Supprimer un work de la table work */
function deleteWork ( db : sqlite3.Database , id : number ) {
function deleteWork ( db : sqlite3.Database , id : number ) {
const deleteWorkQuery = ` DELETE FROM work WHERE id_work = ? ` ;
const deleteWorkQuery = ` DELETE FROM work WHERE id_work = ? ` ;
return runDB ( db , deleteWorkQuery , [ id ] ) ;
return runDB ( db , deleteWorkQuery , [ id ] ) ;
}
}
// Sélectionner un work par son ID
/* Sélectionner un work par son ID */
function selectWorkById ( db : sqlite3.Database , id : number ) {
function selectWorkById ( db : sqlite3.Database , id : number ) {
const selectWorkByIdQuery = ` SELECT * FROM work WHERE id_work = ? ` ;
const selectWorkByIdQuery = ` SELECT * FROM work WHERE id_work = ? ` ;
@ -313,7 +330,8 @@ export {
updateUserLogin ,
updateUserLogin ,
updateUserPassword ,
updateUserPassword ,
updateUserPermissions ,
updateUserPermissions ,
deleteUser ,
deleteUserById ,
deleteUserByLogin ,
deleteAllUsers ,
deleteAllUsers ,
selectAllUsers ,
selectAllUsers ,
selectUserByLogin ,
selectUserByLogin ,