Added user role attribute and broke down updateFavoritesMods into two add and delete functions
This commit is contained in:
parent
072fbbd873
commit
8468abd087
|
@ -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,
|
||||||
);`);
|
);`);
|
||||||
|
|
||||||
|
|
|
@ -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 };
|
|
@ -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 }
|
Loading…
Reference in a new issue