Add the languages table
continuous-integration/drone/push Build is passing Details

pull/2/head
Colin FRIZOT 11 months ago
parent 7047c3d4d3
commit e3ba698b3a

@ -40,11 +40,11 @@ function getDB(
params: any[]
): Promise<void> {
return new Promise((resolve, reject) => {
db.get(query, params, (err, row) => {
db.get(query, params, (err, row : any) => {
if (err) {
reject(err);
} else {
resolve();
resolve(row);
}
});
});
@ -81,6 +81,12 @@ function closeDatabase(db: sqlite3.Database) {
});
}
// Create all the tables in the database
function createTables(db: sqlite3.Database) {
createRegisteredUserTable(db);
createLanguageTable(db);
}
/////////////////////////// Gestion des utilisateurs ///////////////////////////
// CREATE TABLE registered_user (
// id_user SERIAL PRIMARY KEY,
@ -172,12 +178,82 @@ function selectUserById(db: sqlite3.Database, id: number) {
return getDB(db, selectUserByIdQuery, [id]);
}
/////////////////////////// Gestion des Languages ///////////////////////////
// CREATE TABLE language (
// id_language SERIAL PRIMARY KEY,
// designation VARCHAR(30) NOT NULL,
// version INT NOT NULL,
// );
// Créer la table language dans la base de données
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)`;
return runDB(db, tableLanguage, []);
}
// Insérer un language dans la table language
function insertLanguage(
db: sqlite3.Database,
designation: string,
version: number
) {
const insertLanguageQuery = `INSERT INTO language (designation, version) VALUES (?, ?)`;
return runDB(db, insertLanguageQuery, [designation, version]);
}
// Modifier la designation d'un language dans la table language
function updateLanguageDesignation(db: sqlite3.Database, id: number, newDesignation: string) {
const updateLanguageDesignationQuery = `UPDATE language SET designation = ? WHERE id_language = ?`;
return runDB(db, updateLanguageDesignationQuery, [newDesignation, id]);
}
// Modifier la version d'un language dans la table language
function updateLanguageVersion(
db: sqlite3.Database,
id: number,
newVersion: number
) {
const updateLanguageVersionQuery = `UPDATE language SET version = ? WHERE id_language = ?`;
return runDB(db, updateLanguageVersionQuery, [newVersion, id]);
}
// Supprimer un language de la table language
function deleteLanguage(db: sqlite3.Database, id: number) {
const deleteLanguageQuery = `DELETE FROM language WHERE id_language = ?`;
return runDB(db, deleteLanguageQuery, [id]);
}
// Supprimer tous les languages de la table language
function deleteAllLanguages(db: sqlite3.Database) {
const deleteAllLanguagesQuery = `DELETE FROM language`;
return runDB(db, deleteAllLanguagesQuery, []);
}
// Sélectionner tous les languages de la table language
function selectAllLanguages(db: sqlite3.Database): Promise<unknown[]> {
const selectAllLanguagesQuery = `SELECT * FROM language`;
return allDB(db, selectAllLanguagesQuery);
}
// Sélectionner un language par son ID
function selectLanguageById(db: sqlite3.Database, id: number) {
const selectLanguageByIdQuery = `SELECT * FROM language WHERE id_language = ?`;
return getDB(db, selectLanguageByIdQuery, [id]);
}
/////////////////////////// Export des fonctions ///////////////////////////
export {
createDbDirectory,
openDatabase,
closeDatabase,
createRegisteredUserTable,
createTables,
insertUser,
updateUserLogin,
updateUserPassword,
@ -187,4 +263,11 @@ export {
selectAllUsers,
selectUserByLogin,
selectUserById,
insertLanguage,
updateLanguageDesignation,
updateLanguageVersion,
deleteLanguage,
deleteAllLanguages,
selectAllLanguages,
selectLanguageById,
};

@ -9,7 +9,7 @@ import {
createDbDirectory,
openDatabase,
closeDatabase,
createRegisteredUserTable,
createTables,
insertUser,
updateUserLogin,
updateUserPassword,
@ -19,6 +19,13 @@ import {
selectAllUsers,
selectUserByLogin,
selectUserById,
insertLanguage,
updateLanguageDesignation,
updateLanguageVersion,
deleteLanguage,
deleteAllLanguages,
selectAllLanguages,
selectLanguageById,
} from "./database";
const sender = new Push();
@ -80,8 +87,8 @@ createDbDirectory();
// Ouvrir la base de données
const db = openDatabase();
// Créer la table registered_user si elle n'existe pas
createRegisteredUserTable(db);
// Créer les tables si elles n'existent pas
createTables(db);
// Route pour créer un utilisateur
fastify.post<{
@ -167,6 +174,70 @@ fastify.get<{
reply.send(user);
});
// Route pour créer un language
fastify.post<{
Body: {
designation: string;
version: string;
};
}>("/languages", async (request, reply) => {
const { designation, version } = request.body;
insertLanguage(db, designation, parseInt(version));
reply.send({ success: true });
});
// Route pour mettre à jour la désignation d'un language
fastify.put<{
Params: { id: string };
Body: { newDesignation: string };
}>("/languages/:id/designation", async (request, reply) => {
const { id } = request.params;
const { newDesignation } = request.body;
updateLanguageDesignation(db, parseInt(id), newDesignation);
reply.send({ success: true });
});
// Route pour mettre à jour la version d'un language
fastify.put<{
Params: { id: string };
Body: { newVersion: number };
}>("/languages/:id/version", async (request, reply) => {
const { id } = request.params;
const { newVersion } = request.body;
updateLanguageVersion(db, parseInt(id), newVersion);
reply.send({ success: true });
});
// Route pour supprimer un language
fastify.delete<{
Params: { id: string };
}>("/languages/:id", async (request, reply) => {
const { id } = request.params;
deleteLanguage(db, parseInt(id));
reply.send({ success: true });
});
// Route pour supprimer tous les languages
fastify.delete("/languages", async (request, reply) => {
deleteAllLanguages(db);
reply.send({ success: true });
});
// Route pour récupérer un language par son ID
fastify.get<{
Params: { id: string };
}>("/languages/:id", async (request, reply) => {
const { id } = request.params;
const language = await selectLanguageById(db, parseInt(id));
reply.send(language);
});
// Route pour récupérer tous les languages
fastify.get("/languages", async (request, reply) => {
const languages = await selectAllLanguages(db);
reply.send(languages);
});
// Forward output from the runner to the client
async function forwardOutput() {

Loading…
Cancel
Save