diff --git a/src/database.ts b/src/database.ts index 32b5c7b..a7af7dc 100644 --- a/src/database.ts +++ b/src/database.ts @@ -91,7 +91,6 @@ export function closeDatabase(db: sqlite3.Database) { /* Create all the tables in the database */ export function createTables(db: sqlite3.Database) { createRegisteredUserTable(db); - createLanguageTable(db); createWorkTable(db); } @@ -215,87 +214,12 @@ export 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 */ -export function createLanguageTable(db: sqlite3.Database): Promise { - 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 */ -export 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 */ -export 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 */ -export 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 par son ID */ -export 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 */ -export function deleteAllLanguages(db: sqlite3.Database) { - const deleteAllLanguagesQuery = `DELETE FROM language`; - - return runDB(db, deleteAllLanguagesQuery, []); -} - -/* Sélectionner tous les languages de la table language */ -export function selectAllLanguages(db: sqlite3.Database): Promise { - const selectAllLanguagesQuery = `SELECT * FROM language`; - - return allDB(db, selectAllLanguagesQuery); -} - -/* Sélectionner un language par son ID */ -export function selectLanguageById(db: sqlite3.Database, id: number) { - const selectLanguageByIdQuery = `SELECT * FROM language WHERE id_language = ?`; - - return getDB(db, selectLanguageByIdQuery, [id]); -} - /////////////////////////// Gestion des works /////////////////////////// // CREATE TABLE work ( // id_work SERIAL PRIMARY KEY, // link CHAR(36) NOT NULL, // user_id INT REFERENCES registered_user(id_user), -// language_id INT NOT NULL REFERENCES language(id_language) +// language TEXT NOT NULL, // title VARCHAR(30) NOT NULL, // content TEXT NOT NULL, // date TIMESTAMP DEFAULT CURRENT_TIMESTAMP @@ -306,7 +230,7 @@ export function createWorkTable(db: sqlite3.Database): Promise { 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), + language TEXT NOT NULL, title TEXT NOT NULL, content TEXT NOT NULL, date TIMESTAMP DEFAULT CURRENT_TIMESTAMP)`; @@ -318,13 +242,13 @@ export function insertWork( db: sqlite3.Database, link: string, user_id: number, - language_id: number, + language: string, title: string, content: string, ) { - const insertWorkQuery = `INSERT INTO work (link, user_id, language_id, title, content, date) VALUES (?, ?, ?, ?, ?, ?)`; + const insertWorkQuery = `INSERT INTO work (link, user_id, language, title, content, date) VALUES (?, ?, ?, ?, ?, ?)`; - return runDB(db, insertWorkQuery, [link, user_id, language_id, title, content, new Date().toISOString()]); + return runDB(db, insertWorkQuery, [link, user_id, language, title, content, new Date().toISOString()]); } /* Sélectionner tous les works de la table work */ @@ -359,16 +283,6 @@ export function selectLastWorkByUserId(db: sqlite3.Database, user_id: number) { return getDB(db, selectLastWorkByUserIdQuery, [user_id]); } -/* Sélectionner le link du dernier work par l'id de l'utilisateur */ -export function selectLinkLastWorkByUserId(db: sqlite3.Database, user_id: number) { - const selectLinkLastWorkByUserIdQuery = `SELECT link FROM work - WHERE user_id = ? - ORDER BY date DESC - LIMIT 1`; - - return getDB(db, selectLinkLastWorkByUserIdQuery, [user_id]); -} - /* Supprimer tous les works de la table work */ export function deleteAllWorks(db: sqlite3.Database) { const deleteAllWorksQuery = `DELETE FROM work`; diff --git a/src/server.ts b/src/server.ts index 54b1c97..813ff5a 100644 --- a/src/server.ts +++ b/src/server.ts @@ -357,120 +357,6 @@ fastify.get( }, ); -/* Route pour créer un language */ -fastify.post( - "/languages", - { - schema: { - body: Type.Object({ - designation: Type.String(), - version: Type.Number(), - }), - }, - }, - async (request, reply) => { - const { designation, version } = request.body; - db.insertLanguage(database, designation, version); - reply.send({ success: true }); - }, -); - -/* Route pour mettre à jour la désignation d'un language */ -fastify.put( - "/languages/:id/designation", - { - schema: { - params: Type.Object({ - id: Type.Number({ - minimum: 0, - }), - }), - body: Type.Object({ - newDesignation: Type.String(), - }), - }, - }, - async (request, reply) => { - const { id } = request.params; - const { newDesignation } = request.body; - db.updateLanguageDesignation(database, id, newDesignation); - reply.send({ success: true }); - }, -); - -/* Route pour mettre à jour la version d'un language */ -fastify.put( - "/languages/:id/version", - { - schema: { - params: Type.Object({ - id: Type.Number({ - minimum: 0, - }), - }), - body: Type.Object({ - newVersion: Type.Number(), - }), - }, - }, - async (request, reply) => { - const { id } = request.params; - const { newVersion } = request.body; - db.updateLanguageVersion(database, id, newVersion); - reply.send({ success: true }); - }, -); - -/* Route pour supprimer un language */ -fastify.delete( - "/languages/:id", - { - schema: { - params: Type.Object({ - id: Type.Number({ - minimum: 0, - }), - }), - }, - }, - async (request, reply) => { - const { id } = request.params; - db.deleteLanguage(database, id); - reply.send({ success: true }); - }, -); - -/* Route pour supprimer tous les languages */ -fastify.delete("/languages", async (request, reply) => { - db.deleteAllLanguages(database); - reply.send({ success: true }); -}); - -/* Route pour récupérer un language par son ID */ -fastify.get( - "/languages/:id", - { - schema: { - params: Type.Object({ - id: Type.Number({ - minimum: 0, - }), - }), - }, - }, - async (request, reply) => { - const { id } = request.params; - const language = await db.selectLanguageById(database, id); - reply.send(language); - }, -); - -/* Route pour récupérer tous les languages */ -fastify.get("/languages", async (request, reply) => { - const languages = await db.selectAllLanguages(database); - reply.send(languages); -}); - /* Route pour créer un work */ fastify.post( "/works", @@ -479,15 +365,15 @@ fastify.post( body: Type.Object({ id_user: Type.Number(), link: Type.String(), - id_language: Type.Number(), + language: Type.String(), title: Type.String(), code: Type.String(), }), }, }, async (request, reply) => { - const { id_user, link, id_language, title, code } = request.body; - await db.insertWork(database, link, id_user, id_language, title, code); + const { id_user, link, language, title, code } = request.body; + await db.insertWork(database, link, id_user, language, title, code); reply.send({ success: true }); }, ); @@ -561,25 +447,6 @@ fastify.get( }, ); -/* Route pour récupérer le dernier work par l'id de l'utilisateur */ -fastify.get( - "/works/last-link/:user_id", - { - schema: { - params: Type.Object({ - user_id: Type.Number({ - minimum: 0, - }), - }), - }, - }, - async (request, reply) => { - const { user_id } = request.params; - const linkWork = await db.selectLinkLastWorkByUserId(database, user_id); - reply.send(linkWork); - }, -); - /* Update the work title by its ID */ fastify.put( "/works/:id/title",