@ -7,7 +7,7 @@ const dbFilePath = `${dbDirectory}/database.db`;
/* Fonction pour exécuter une requête sur la base de données */
/* 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) */
/* Fonction pour exécuter une requête de modification de la base de données (INSERT, UPDATE, DELETE) */
function runDB (
export function runDB (
db : sqlite3.Database ,
db : sqlite3.Database ,
query : string ,
query : string ,
params : any [ ]
params : any [ ]
@ -24,7 +24,10 @@ function runDB(
}
}
/* Fonction pour récupérer plusieurs lignes de la base de données */
/* Fonction pour récupérer plusieurs lignes de la base de données */
function allDB ( db : sqlite3.Database , query : string ) : Promise < any [ ] > {
export function allDB < T > (
db : sqlite3.Database ,
query : string
) : Promise < unknown [ ] > {
return new Promise ( ( resolve , reject ) = > {
return new Promise ( ( resolve , reject ) = > {
db . all ( query , ( err , rows ) = > {
db . all ( query , ( err , rows ) = > {
if ( err ) {
if ( err ) {
@ -37,11 +40,11 @@ function allDB(db: sqlite3.Database, query: string): Promise<any[]> {
}
}
/* Fonction pour récupérer une seule ligne de la base de données */
/* Fonction pour récupérer une seule ligne de la base de données */
function getDB (
export function getDB < T > (
db : sqlite3.Database ,
db : sqlite3.Database ,
query : string ,
query : string ,
params : any [ ]
params : any [ ]
) : Promise < void > {
) : Promise < T[ ] > {
return new Promise ( ( resolve , reject ) = > {
return new Promise ( ( resolve , reject ) = > {
db . get ( query , params , ( err , row : any ) = > {
db . get ( query , params , ( err , row : any ) = > {
if ( err ) {
if ( err ) {
@ -56,14 +59,14 @@ 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() {
export 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() {
export 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 (
dbFilePath ,
dbFilePath ,
@ -75,7 +78,7 @@ function openDatabase() {
}
}
/* Fermer la base de données */
/* Fermer la base de données */
function closeDatabase ( db : sqlite3.Database ) {
export function closeDatabase ( db : sqlite3.Database ) {
db . close ( ( err ) = > {
db . close ( ( err ) = > {
if ( err ) {
if ( err ) {
console . error ( err . message ) ;
console . error ( err . message ) ;
@ -85,7 +88,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 ) {
export function createTables ( db : sqlite3.Database ) {
createRegisteredUserTable ( db ) ;
createRegisteredUserTable ( db ) ;
createLanguageTable ( db ) ;
createLanguageTable ( db ) ;
createWorkTable ( db ) ;
createWorkTable ( db ) ;
@ -101,14 +104,14 @@ function createTables(db: sqlite3.Database) {
// );
// );
/* 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 > {
export 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 (
export function insertUser (
db : sqlite3.Database ,
db : sqlite3.Database ,
login : string ,
login : string ,
password : string ,
password : string ,
@ -120,14 +123,18 @@ function insertUser(
}
}
/* 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 ) {
export 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 (
export function updateUserPassword (
db : sqlite3.Database ,
db : sqlite3.Database ,
id : number ,
id : number ,
newPassword : string
newPassword : string
@ -138,7 +145,7 @@ function updateUserPassword(
}
}
/* Modifier les permissions d'un utilisateur dans la table registered_user */
/* Modifier les permissions d'un utilisateur dans la table registered_user */
function updateUserPermissions (
export function updateUserPermissions (
db : sqlite3.Database ,
db : sqlite3.Database ,
id : number ,
id : number ,
newPermissions : number
newPermissions : number
@ -149,42 +156,42 @@ function updateUserPermissions(
}
}
/* Supprimer un utilisateur de la table registered_user par son ID */
/* Supprimer un utilisateur de la table registered_user par son ID */
function deleteUserById ( db : sqlite3.Database , id : number ) {
export function deleteUserById ( 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 un utilisateur de la table registered_user par son login */
/* Supprimer un utilisateur de la table registered_user par son login */
function deleteUserByLogin ( db : sqlite3.Database , login : string ) {
export function deleteUserByLogin ( db : sqlite3.Database , login : string ) {
const deleteUserQuery = ` DELETE FROM registered_user WHERE login = ? ` ;
const deleteUserQuery = ` DELETE FROM registered_user WHERE login = ? ` ;
return runDB ( db , deleteUserQuery , [ login ] ) ;
return runDB ( db , deleteUserQuery , [ login ] ) ;
}
}
/* Supprimer tous les utilisateurs de la table registered_user */
/* Supprimer tous les utilisateurs de la table registered_user */
function deleteAllUsers ( db : sqlite3.Database ) {
export 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 [ ] > {
export 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 ) {
export 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 ) {
export 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 = ? ` ;
return getDB ( db , selectUserByIdQuery , [ id ] ) ;
return getDB ( db , selectUserByIdQuery , [ id ] ) ;
@ -198,13 +205,13 @@ function selectUserById(db: sqlite3.Database, id: number) {
// );
// );
/* 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 > {
export 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 (
export function insertLanguage (
db : sqlite3.Database ,
db : sqlite3.Database ,
designation : string ,
designation : string ,
version : number
version : number
@ -215,7 +222,7 @@ function insertLanguage(
}
}
/* Modifier la designation d'un language dans la table language */
/* Modifier la designation d'un language dans la table language */
function updateLanguageDesignation (
export function updateLanguageDesignation (
db : sqlite3.Database ,
db : sqlite3.Database ,
id : number ,
id : number ,
newDesignation : string
newDesignation : string
@ -226,7 +233,7 @@ function updateLanguageDesignation(
}
}
/* Modifier la version d'un language dans la table language */
/* Modifier la version d'un language dans la table language */
function updateLanguageVersion (
export function updateLanguageVersion (
db : sqlite3.Database ,
db : sqlite3.Database ,
id : number ,
id : number ,
newVersion : number
newVersion : number
@ -237,28 +244,28 @@ function updateLanguageVersion(
}
}
/* Supprimer un language de la table language par son ID */
/* Supprimer un language de la table language par son ID */
function deleteLanguage ( db : sqlite3.Database , id : number ) {
export 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 ) {
export 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 [ ] > {
export 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 ) {
export function selectLanguageById ( db : sqlite3.Database , id : number ) {
const selectLanguageByIdQuery = ` SELECT * FROM language WHERE id_language = ? ` ;
const selectLanguageByIdQuery = ` SELECT * FROM language WHERE id_language = ? ` ;
return getDB ( db , selectLanguageByIdQuery , [ id ] ) ;
return getDB ( db , selectLanguageByIdQuery , [ id ] ) ;
@ -274,13 +281,13 @@ function selectLanguageById(db: sqlite3.Database, id: number) {
// );
// );
/* 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 > {
export function createWorkTable ( db : sqlite3.Database ) : Promise < void > {
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), 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 (
export function insertWork (
db : sqlite3.Database ,
db : sqlite3.Database ,
link : string ,
link : string ,
user_id : number ,
user_id : number ,
@ -293,59 +300,29 @@ function insertWork(
}
}
/* 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 [ ] > {
export 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 ) {
export 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 ) {
export 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 ) {
export function selectWorkById ( db : sqlite3.Database , id : number ) {
const selectWorkByIdQuery = ` SELECT * FROM work WHERE id_work = ? ` ;
const selectWorkByIdQuery = ` SELECT * FROM work WHERE id_work = ? ` ;
return getDB ( db , selectWorkByIdQuery , [ id ] ) ;
return getDB ( db , selectWorkByIdQuery , [ id ] ) ;
}
}
/////////////////////////// Export des fonctions ///////////////////////////
export {
createDbDirectory ,
openDatabase ,
closeDatabase ,
createTables ,
insertUser ,
updateUserLogin ,
updateUserPassword ,
updateUserPermissions ,
deleteUserById ,
deleteUserByLogin ,
deleteAllUsers ,
selectAllUsers ,
selectUserByLogin ,
selectUserById ,
insertLanguage ,
updateLanguageDesignation ,
updateLanguageVersion ,
deleteLanguage ,
deleteAllLanguages ,
selectAllLanguages ,
selectLanguageById ,
insertWork ,
selectAllWorks ,
deleteAllWorks ,
deleteWork ,
selectWorkById ,
} ;