Added user role attribute and broke down updateFavoritesMods into two add and delete functions

This commit is contained in:
Gu://em_ 2025-04-27 18:02:44 +02:00
parent 072fbbd873
commit 8468abd087
3 changed files with 41 additions and 31 deletions

View file

@ -40,6 +40,7 @@ async function initDatabase() {
email TINYTEXT NOT NULL, email TINYTEXT NOT NULL,
password TINYTEXT NOT NULL, password TINYTEXT NOT NULL,
profile_picture LONGTEXT, profile_picture LONGTEXT,
role TINYTEXT, NOT NULL,
settings LONGTEXT, settings LONGTEXT,
);`); );`);

View file

@ -146,4 +146,8 @@ async function deleteTags(tags) {
// --- Exports --- // --- Exports ---
module.exports = { getAllMods, getModByName, createMod, deleteMod, exists } module.exports = { getAllMods, getModByName, getFullModInfos,
createMod, addVersion, addTags,
updateMod,
deleteMod, deleteVersion, deleteTags,
exists };

View file

@ -10,15 +10,15 @@ async function getAllUsers(name) {
} }
async function getUserByName(name) { async function getUserByName(name) {
return await db.query("SELECT username, display_name, profile_picture FROM Users WHERE username = ?;", [name]); return await db.query("SELECT username, display_name, profile_picture, role FROM Users WHERE username = ?;", [name]);
} }
async function getUserByEmail(email) { async function getUserByEmail(email) {
return await db.query("SELECT email, username, display_name, FROM Users WHERE email = ?;", [email]); return await db.query("SELECT email, username FROM Users WHERE email = ?;", [email]);
} }
async function getFullUserInfos(name) { async function getFullUserInfos(name) {
return await db.query("SELECT username, display_name, email, profile_picture, settings FROM Users WHERE username = ?;", [name]); return await db.query("SELECT username, display_name, email, profile_picture, role, settings FROM Users WHERE username = ?;", [name]);
} }
async function getUserPassword(name) { async function getUserPassword(name) {
@ -35,8 +35,8 @@ async function exists(name) {
async function createUser( username, email, password, displayName, profilePicture, settings ) { async function createUser( username, email, password, displayName, profilePicture, settings ) {
// Create user // Create user
await db.prepare("INSERT INTO Users (username, email, password, display_name) \ await db.prepare("INSERT INTO Users (username, email, password, display_name, role) \
VALUES (?, ?, ?, ?)", [username, email, password, displayName]); VALUES (?, ?, ?, ?, ?)", [username, email, password, displayName, "user"]);
// Handle nullable fields // Handle nullable fields
if (profilePicture) { if (profilePicture) {
@ -49,6 +49,19 @@ async function createUser( username, email, password, displayName, profilePictur
return; return;
} }
async function addFavoriteMods(username, favs) {
const promises = favs.map(async (mod) => {
db.query(`INSERT INTO UserFavoriteMods
(username, mod) VALUES (?, ?);`,
[username, mod]);
});
await Promise.all(promises);
return;
}
// --- Update --- // --- Update ---
@ -75,27 +88,6 @@ async function updateUserPassword(username, password) {
await db.prepare(`UPDATE Users SET password = ? WHERE username = ?`, [password, username]); await db.prepare(`UPDATE Users SET password = ? WHERE username = ?`, [password, username]);
} }
async function updateUserFavoriteMods(username, new_favs, deleted_favs) {
// Delete / Add asynchronously
const promises_new = new_favs.map(async (mod) => {
db.query(`INSERT INTO UserFavoriteMods
(username, mod) VALUES (?, ?);`,
[username, mod]);
});
const promises_deleted = deleted_favs.map(async (mod) => {
db.query(`DELETE FROM UserFavoriteMods
WHERE username = ? AND mod = ?;`, [username, mod]);
});
// Await
await Promise.all(promises_new);
await Promise.all(promises_deleted);
return;
}
async function updateUserAttribute(username, attribute, value) { async function updateUserAttribute(username, attribute, value) {
await db.prepare(`UPDATE Users SET ${attribute} = ? WHERE username = ?`, [value, username]); await db.prepare(`UPDATE Users SET ${attribute} = ? WHERE username = ?`, [value, username]);
return; return;
@ -109,11 +101,24 @@ async function deleteUser(username) {
return; return;
} }
async function deleteFavoriteMods(username, favs) {
const promises = favs.map(async (mod) => {
db.query(`DELETE FROM UserFavoriteMods
WHERE username = ? AND mod = ?;`, [username, mod]);
});
// Await
await Promise.all(promises);
return;
}
// --- Exports --- // --- Exports ---
module.exports = { getAllUsers, getUserByName, getUserByEmail, getFullUserInfos, getUserPassword, module.exports = { getAllUsers, getUserByName, getUserByEmail, getFullUserInfos, getUserPassword,
createUser, createUser, addFavoriteMods,
updateUser, updateUserFavoriteMods, updateUser,
deleteUser, deleteUser, deleteFavoriteMods,
exists } exists }