feat: Updated database model

This commit is contained in:
Gu://em_ 2025-04-25 14:37:42 +02:00
parent ce806ef426
commit 32a5c97c02
4 changed files with 33 additions and 70 deletions

View file

@ -32,31 +32,29 @@ async function initDatabase() {
} }
// Create mods table // Create mods table
db.exec("CREATE TABLE IF NOT EXISTS mods ( \ db.exec("CREATE TABLE IF NOT EXISTS Mods ( \
Username tinytext PRIMARY KEY, \ name tinytext PRIMARY KEY, \
DisplayName tinytext, \ display_name tinytext, \
Author tinytext,\ author tinytext\
Versions longtext,\
OtherInfos longtext \
);"); );");
// Insert example mod // Insert example mod
// if (!(await db.exists("mods", "Name", "example"))) { // if (!(await db.exists("mods", "Name", "example"))) {
// console.debug("Creating default mod"); // console.debug("Creating default mod");
// db.exec(`INSERT INTO mods (Name, DisplayName, Author, Versions, OtherInfos) \ // db.exec(`INSERT INTO Mods (name, display_name, author, versions) \
// VALUES ('example', 'Example mod', '${config.users.admin.username}', '', '');`); // VALUES ('example', 'Example mod', '${config.users.admin.username}', '');`);
// } // }
db.exec("DROP TABLE users");
// Create users table // Create users table
db.exec("CREATE TABLE IF NOT EXISTS users ( \ db.exec("CREATE TABLE IF NOT EXISTS Users ( \
Username tinytext PRIMARY KEY, \ username tinytext PRIMARY KEY, \
DisplayName tinytext, \ display_name tinytext, \
Email tinytext,\ email tinytext,\
Password tinytext,\ password tinytext,\
ProfilePicture longtext,\ profile_picture longtext,\
Preferences longtext, \ preferences longtext, \
Favorites longtext \ favorites longtext \
);"); );");
// Insert default admin account // Insert default admin account

View file

@ -80,4 +80,4 @@ async function authorizeUserModification(req) {
} }
module.exports = { authenticateToken } module.exports = { authenticateToken, authorizeModModification, authorizeModpackModification, authorizeUserModification };

View file

@ -3,27 +3,16 @@ const AppError = require('../utils/appError');
const db = getDatabase(); const db = getDatabase();
async function getAllMods() { async function getAllMods() {
return db.query("SELECT * FROM mods"); return db.query("SELECT name FROM Mods");
} }
async function getModByName(name) { async function getModByName(name) {
try { return await db.query("SELECT name, display_name, author FROM Mods WHERE name = ?;", [name]);
console.debug("Searching for", name);
const res = await db.query("SELECT * FROM mods WHERE Name = ?;", [name]);
if (res && res.length > 0) {
return res[0];
} else {
return null;
}
} catch (err) {
console.error("Error in getModByName:", err);
throw err;
}
} }
async function exists(name) { async function exists(name) {
return db.exists("mods", "Name", name); return db.exists("Mods", "name", name);
} }
async function createMod(mod_data) { async function createMod(mod_data) {
@ -31,8 +20,8 @@ async function createMod(mod_data) {
const { name, displayName, author, versions, otherInfos } = mod_data; const { name, displayName, author, versions, otherInfos } = mod_data;
const { description, links, tags, screenshots, license, changelogs, counts } = otherInfos; const { description, links, tags, screenshots, license, changelogs, counts } = otherInfos;
await db.prepare("INSERT INTO mods (Name, DisplayName, Author, Versions) \ await db.prepare("INSERT INTO mods (name, display_name, author) \
VALUES (?, ?, ?, ?)", [name, displayName, author, versions]); VALUES (?, ?, ?, ?)", [name, displayName, author]);
// db.prepare("INSERT INTO modsDescription (Name, Description, Links, Tags, Screenshots, License, Changelogs, Counts) \ // db.prepare("INSERT INTO modsDescription (Name, Description, Links, Tags, Screenshots, License, Changelogs, Counts) \
// VALUES (?, ?, ?, ?, ?, ?, ?, ?)", [name, description, links, tags, screenshots, license, changelogs, counts]); // VALUES (?, ?, ?, ?, ?, ?, ?, ?)", [name, description, links, tags, screenshots, license, changelogs, counts]);
return; return;
@ -40,7 +29,7 @@ async function createMod(mod_data) {
async function deleteMod(name) { async function deleteMod(name) {
console.log("WARNING: using a WIP function : deleteMod (models/mods.js)"); console.log("WARNING: using a WIP function : deleteMod (models/mods.js)");
db.prepare("DELETE FROM mods WHERE Name = ?", [name]); db.prepare("DELETE FROM Mods WHERE name = ?", [name]);
// db.prepare("DELETE FROM modsDescription WHERE Name = ?", [name]); // db.prepare("DELETE FROM modsDescription WHERE Name = ?", [name]);
return; return;
} }

View file

@ -7,52 +7,28 @@ async function getAllUsers() {
} }
async function getUserByName(name) { async function getUserByName(name) {
try { return await db.query("SELECT * FROM Users WHERE username = ?;", [name]);
console.debug("Searching for", name);
const res = await db.query("SELECT * FROM users WHERE Username = ?;", [name]);
if (res && res.length > 0) {
return res[0];
} else {
return null;
}
} catch (err) {
console.error("Error in getUserByName:", err);
throw err;
}
} }
async function getUserByEmail(email) { async function getUserByEmail(email) {
try { return await db.query("SELECT * FROM Users WHERE email = ?;", [email]);
console.debug("Searching for", email);
const res = await db.query("SELECT * FROM users WHERE Email = ?;", [email]);
if (res && res.length > 0) {
return res[0];
} else {
return null;
}
} catch (err) {
console.error("Error in getUserByName:", err);
throw err;
}
} }
async function exists(name) { async function exists(name) {
return db.exists("users", "Username", name); return db.exists("Users", "username", name);
} }
async function createUser(user_data) { async function createUser(user_data) {
const { name, email, password, displayName, profilePicture, favorites, preferences } = user_data; const { name, email, password, displayName, profilePicture, favorites, preferences } = user_data;
await db.prepare("INSERT INTO users (Username, Email, Password, DisplayName, ProfilePicture, Favorites, Preferences) \ await db.prepare("INSERT INTO Users (username, email, password, display_name, profile_picture, favorites, preferences) \
VALUES (?, ?, ?, ?)", [name, email, password, displayName, profilePicture, favorites, preferences]); VALUES (?, ?, ?, ?)", [name, email, password, displayName, profilePicture, favorites, preferences]);
return; return;
} }
async function deleteUser(name) { async function deleteUser(name) {
db.prepare("DELETE FROM users WHERE Username = ?", [name]); db.prepare("DELETE FROM Users WHERE username = ?", [name]);
return; return;
} }