|
|
|
@ -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<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 */
|
|
|
|
|
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<unknown[]> {
|
|
|
|
|
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<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),
|
|
|
|
|
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`;
|
|
|
|
|