Add the start of the work table
continuous-integration/drone/push Build is passing Details

pull/2/head
Colin FRIZOT 11 months ago
parent e3ba698b3a
commit 7c65066ca9

@ -85,6 +85,7 @@ function closeDatabase(db: sqlite3.Database) {
function createTables(db: sqlite3.Database) {
createRegisteredUserTable(db);
createLanguageTable(db);
createWorkTable(db);
}
/////////////////////////// Gestion des utilisateurs ///////////////////////////
@ -248,6 +249,60 @@ function selectLanguageById(db: sqlite3.Database, id: number) {
return getDB(db, selectLanguageByIdQuery, [id]);
}
/////////////////////////// Gestion des works ///////////////////////////
// CREATE TABLE work (
// id_work SERIAL PRIMARY KEY,
// user_id INT REFERENCES registered_user(id_user),
// language_id INT NOT NULL REFERENCES language(id_language)
// content TEXT NOT NULL,
// );
// Créer la table work dans la base de données
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)`;
return runDB(db, tableWork, []);
}
// Insérer un work dans la table work
function insertWork(
db: sqlite3.Database,
user_id: number,
language_id: number,
content: string
) {
const insertWorkQuery = `INSERT INTO work (user_id, language_id, content) VALUES (?, ?, ?)`;
return runDB(db, insertWorkQuery, [user_id, language_id, content]);
}
// Sélectionner tous les works de la table work
function selectAllWorks(db: sqlite3.Database): Promise<unknown[]> {
const selectAllWorksQuery = `SELECT * FROM work`;
return allDB(db, selectAllWorksQuery);
}
// Supprimer tous les works de la table work
function deleteAllWorks(db: sqlite3.Database) {
const deleteAllWorksQuery = `DELETE FROM work`;
return runDB(db, deleteAllWorksQuery, []);
}
// Supprimer un work de la table work
function deleteWork(db: sqlite3.Database, id: number) {
const deleteWorkQuery = `DELETE FROM work WHERE id_work = ?`;
return runDB(db, deleteWorkQuery, [id]);
}
// Sélectionner un work par son ID
function selectWorkById(db: sqlite3.Database, id: number) {
const selectWorkByIdQuery = `SELECT * FROM work WHERE id_work = ?`;
return getDB(db, selectWorkByIdQuery, [id]);
}
/////////////////////////// Export des fonctions ///////////////////////////
export {
createDbDirectory,
@ -270,4 +325,9 @@ export {
deleteAllLanguages,
selectAllLanguages,
selectLanguageById,
insertWork,
selectAllWorks,
deleteAllWorks,
deleteWork,
selectWorkById,
};

@ -26,6 +26,11 @@ import {
deleteAllLanguages,
selectAllLanguages,
selectLanguageById,
insertWork,
selectAllWorks,
deleteAllWorks,
deleteWork,
selectWorkById,
} from "./database";
const sender = new Push();
@ -238,6 +243,49 @@ fastify.get("/languages", async (request, reply) => {
reply.send(languages);
});
// Route pour créer un work
fastify.post<{
Body: {
id_user: number;
id_language: number;
code: string;
};
}>("/works", async (request, reply) => {
const { id_user, id_language, code } = request.body;
insertWork(db, id_user, id_language, code);
reply.send({ success: true });
});
// Route pour récupérer tous les works
fastify.get("/works", async (request, reply) => {
const works = await selectAllWorks(db);
reply.send(works);
});
// Route pour supprimer tous les works
fastify.delete("/works", async (request, reply) => {
deleteAllWorks(db);
reply.send({ success: true });
});
// Route pour supprimer un work
fastify.delete<{
Params: { id: string };
}>("/works/:id", async (request, reply) => {
const { id } = request.params;
deleteWork(db, parseInt(id));
reply.send({ success: true });
});
// Route pour récupérer un work par son ID
fastify.get<{
Params: { id: string };
}>("/works/:id", async (request, reply) => {
const { id } = request.params;
const work = await selectWorkById(db, parseInt(id));
reply.send(work);
});
// Forward output from the runner to the client
async function forwardOutput() {

Loading…
Cancel
Save