Add an email to User and title, date to Work
continuous-integration/drone/push Build is passing Details

Colin FRIZOT 11 months ago
parent ef726bc789
commit a9651ed09f

@ -98,6 +98,7 @@ export function createTables(db: sqlite3.Database) {
// CREATE TABLE registered_user ( // CREATE TABLE registered_user (
// id_user SERIAL PRIMARY KEY, // id_user SERIAL PRIMARY KEY,
// login VARCHAR(64) NOT NULL, // login VARCHAR(64) NOT NULL,
// email VARCHAR(64) NOT NULL,
// password VARCHAR(72) NOT NULL, // password VARCHAR(72) NOT NULL,
// permissions INT NOT NULL, // permissions INT NOT NULL,
// UNIQUE (login) // UNIQUE (login)
@ -105,7 +106,13 @@ export 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 */
export 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,
email TEXT NOT NULL,
password TEXT NOT NULL,
permissions INTEGER NOT NULL,
UNIQUE (login))`;
return runDB(db, tableRegisteredUser, []); return runDB(db, tableRegisteredUser, []);
} }
@ -114,12 +121,13 @@ export function createRegisteredUserTable(db: sqlite3.Database): Promise<void> {
export function insertUser( export function insertUser(
db: sqlite3.Database, db: sqlite3.Database,
login: string, login: string,
email: string,
password: string, password: string,
permissions: number permissions: number
) { ) {
const insertUserQuery = `INSERT INTO registered_user (login, password, permissions) VALUES (?, ?, ?)`; const insertUserQuery = `INSERT INTO registered_user (login, email, password, permissions) VALUES (?, ?, ?, ?)`;
return runDB(db, insertUserQuery, [login, password, permissions]); return runDB(db, insertUserQuery, [login, email, password, permissions]);
} }
/* Modifier le login d'un utilisateur dans la table registered_user */ /* Modifier le login d'un utilisateur dans la table registered_user */
@ -155,6 +163,15 @@ export function updateUserPermissions(
return runDB(db, updateUserPermissionsQuery, [newPermissions, id]); return runDB(db, updateUserPermissionsQuery, [newPermissions, id]);
} }
export function updateUserEmail(
db: sqlite3.Database,
id: number,
newEmail: string
) {
const updateUserEmailQuery = `UPDATE registered_user SET email = ? WHERE id_user = ?`;
return runDB(db, updateUserEmailQuery, [newEmail, id]);
}
/* Supprimer un utilisateur de la table registered_user par son ID */ /* Supprimer un utilisateur de la table registered_user par son ID */
export 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 = ?`;
@ -277,12 +294,20 @@ export function selectLanguageById(db: sqlite3.Database, id: number) {
// link CHAR(36) NOT NULL, // link CHAR(36) NOT NULL,
// user_id INT REFERENCES registered_user(id_user), // user_id INT REFERENCES registered_user(id_user),
// language_id INT NOT NULL REFERENCES language(id_language) // language_id INT NOT NULL REFERENCES language(id_language)
// title VARCHAR(30) NOT NULL,
// content TEXT NOT NULL, // content TEXT NOT NULL,
// date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
// ); // );
/* Créer la table work dans la base de données */ /* Créer la table work dans la base de données */
export 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),
title TEXT NOT NULL,
content TEXT NOT NULL,
date TIMESTAMP DEFAULT CURRENT_TIMESTAMP)`;
return runDB(db, tableWork, []); return runDB(db, tableWork, []);
} }
@ -292,11 +317,13 @@ export function insertWork(
link: string, link: string,
user_id: number, user_id: number,
language_id: number, language_id: number,
content: string title: string,
content: string,
date: string
) { ) {
const insertWorkQuery = `INSERT INTO work (link, user_id, language_id, content) VALUES (?, ?, ?, ?)`; const insertWorkQuery = `INSERT INTO work (link, user_id, language_id, title, content, date) VALUES (?, ?, ?, ?, ?, ?)`;
return runDB(db, insertWorkQuery, [link, user_id, language_id, content]); return runDB(db, insertWorkQuery, [link, user_id, language_id, title, content, date]);
} }
/* Sélectionner tous les works de la table work */ /* Sélectionner tous les works de la table work */

@ -113,14 +113,15 @@ fastify.post(
schema: { schema: {
body: Type.Object({ body: Type.Object({
login: Type.String(), login: Type.String(),
email: Type.String(),
password: Type.String(), password: Type.String(),
permissions: Type.Number(), permissions: Type.Number(),
}), }),
}, },
}, },
async (request, reply) => { async (request, reply) => {
const { login, password, permissions } = request.body; const { login, email, password, permissions } = request.body;
db.insertUser(database, login, password, permissions); db.insertUser(database, login, email, password, permissions);
reply.send({ success: true }); reply.send({ success: true });
} }
); );
@ -194,6 +195,29 @@ fastify.put(
} }
); );
/* Route pour mettre à jour l'email d'un utilisateur */
fastify.put(
"/users/:id/email",
{
schema: {
params: Type.Object({
id: Type.Number({
minimum: 0,
}),
}),
body: Type.Object({
newEmail: Type.String(),
}),
},
},
async (request, reply) => {
const { id } = request.params;
const { newEmail } = request.body;
await db.updateUserEmail(database, id, newEmail);
reply.send({ success: true });
}
);
/* Route pour supprimer un utilisateur par son ID */ /* Route pour supprimer un utilisateur par son ID */
fastify.delete( fastify.delete(
"/users/:id", "/users/:id",
@ -401,13 +425,15 @@ fastify.post(
id_user: Type.Number(), id_user: Type.Number(),
link: Type.String(), link: Type.String(),
id_language: Type.Number(), id_language: Type.Number(),
title: Type.String(),
code: Type.String(), code: Type.String(),
date: Type.String(),
}), }),
}, },
}, },
async (request, reply) => { async (request, reply) => {
const { id_user, link, id_language, code } = request.body; const { id_user, link, id_language, title, code, date } = request.body;
db.insertWork(database, link, id_user, id_language, code); db.insertWork(database, link, id_user, id_language, title, code, date);
reply.send({ success: true }); reply.send({ success: true });
} }
); );

Loading…
Cancel
Save