feat: Updated database model
This commit is contained in:
parent
ce806ef426
commit
32a5c97c02
|
@ -11,11 +11,11 @@ async function connectDatabase() {
|
|||
|
||||
// Choose database type
|
||||
if (config.type === "mysql") {
|
||||
db = new MySQLDatabase(config);
|
||||
db = new MySQLDatabase(config);
|
||||
} else if (config.type === "sqlite") {
|
||||
db = new SQLiteDatabase(config);
|
||||
db = new SQLiteDatabase(config);
|
||||
} else {
|
||||
throw new Error("Invalid database type: ", config.type);
|
||||
throw new Error("Invalid database type: ", config.type);
|
||||
}
|
||||
|
||||
// Connect
|
||||
|
@ -32,32 +32,30 @@ async function initDatabase() {
|
|||
}
|
||||
|
||||
// Create mods table
|
||||
db.exec("CREATE TABLE IF NOT EXISTS mods ( \
|
||||
Username tinytext PRIMARY KEY, \
|
||||
DisplayName tinytext, \
|
||||
Author tinytext,\
|
||||
Versions longtext,\
|
||||
OtherInfos longtext \
|
||||
);");
|
||||
db.exec("CREATE TABLE IF NOT EXISTS Mods ( \
|
||||
name tinytext PRIMARY KEY, \
|
||||
display_name tinytext, \
|
||||
author tinytext\
|
||||
);");
|
||||
|
||||
// Insert example mod
|
||||
// if (!(await db.exists("mods", "Name", "example"))) {
|
||||
// console.debug("Creating default mod");
|
||||
// db.exec(`INSERT INTO mods (Name, DisplayName, Author, Versions, OtherInfos) \
|
||||
// VALUES ('example', 'Example mod', '${config.users.admin.username}', '', '');`);
|
||||
// db.exec(`INSERT INTO Mods (name, display_name, author, versions) \
|
||||
// VALUES ('example', 'Example mod', '${config.users.admin.username}', '');`);
|
||||
// }
|
||||
|
||||
db.exec("DROP TABLE users");
|
||||
|
||||
// Create users table
|
||||
db.exec("CREATE TABLE IF NOT EXISTS users ( \
|
||||
Username tinytext PRIMARY KEY, \
|
||||
DisplayName tinytext, \
|
||||
Email tinytext,\
|
||||
Password tinytext,\
|
||||
ProfilePicture longtext,\
|
||||
Preferences longtext, \
|
||||
Favorites longtext \
|
||||
);");
|
||||
db.exec("CREATE TABLE IF NOT EXISTS Users ( \
|
||||
username tinytext PRIMARY KEY, \
|
||||
display_name tinytext, \
|
||||
email tinytext,\
|
||||
password tinytext,\
|
||||
profile_picture longtext,\
|
||||
preferences longtext, \
|
||||
favorites longtext \
|
||||
);");
|
||||
|
||||
// Insert default admin account
|
||||
// if (!(await db.exists("users", "Username", config.users.admin.username))) {
|
||||
|
@ -69,7 +67,7 @@ async function initDatabase() {
|
|||
|
||||
|
||||
function getDatabase() {
|
||||
return db;
|
||||
return db;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -80,4 +80,4 @@ async function authorizeUserModification(req) {
|
|||
}
|
||||
|
||||
|
||||
module.exports = { authenticateToken }
|
||||
module.exports = { authenticateToken, authorizeModModification, authorizeModpackModification, authorizeUserModification };
|
|
@ -3,27 +3,16 @@ const AppError = require('../utils/appError');
|
|||
const db = getDatabase();
|
||||
|
||||
async function getAllMods() {
|
||||
return db.query("SELECT * FROM mods");
|
||||
return db.query("SELECT name FROM Mods");
|
||||
}
|
||||
|
||||
async function getModByName(name) {
|
||||
try {
|
||||
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;
|
||||
}
|
||||
return await db.query("SELECT name, display_name, author FROM Mods WHERE name = ?;", [name]);
|
||||
|
||||
}
|
||||
|
||||
async function exists(name) {
|
||||
return db.exists("mods", "Name", name);
|
||||
return db.exists("Mods", "name", name);
|
||||
}
|
||||
|
||||
async function createMod(mod_data) {
|
||||
|
@ -31,8 +20,8 @@ async function createMod(mod_data) {
|
|||
const { name, displayName, author, versions, otherInfos } = mod_data;
|
||||
const { description, links, tags, screenshots, license, changelogs, counts } = otherInfos;
|
||||
|
||||
await db.prepare("INSERT INTO mods (Name, DisplayName, Author, Versions) \
|
||||
VALUES (?, ?, ?, ?)", [name, displayName, author, versions]);
|
||||
await db.prepare("INSERT INTO mods (name, display_name, author) \
|
||||
VALUES (?, ?, ?, ?)", [name, displayName, author]);
|
||||
// db.prepare("INSERT INTO modsDescription (Name, Description, Links, Tags, Screenshots, License, Changelogs, Counts) \
|
||||
// VALUES (?, ?, ?, ?, ?, ?, ?, ?)", [name, description, links, tags, screenshots, license, changelogs, counts]);
|
||||
return;
|
||||
|
@ -40,7 +29,7 @@ async function createMod(mod_data) {
|
|||
|
||||
async function deleteMod(name) {
|
||||
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]);
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -7,52 +7,28 @@ async function getAllUsers() {
|
|||
}
|
||||
|
||||
async function getUserByName(name) {
|
||||
try {
|
||||
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;
|
||||
}
|
||||
|
||||
return await db.query("SELECT * FROM Users WHERE username = ?;", [name]);
|
||||
}
|
||||
|
||||
async function getUserByEmail(email) {
|
||||
try {
|
||||
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;
|
||||
}
|
||||
|
||||
return await db.query("SELECT * FROM Users WHERE email = ?;", [email]);
|
||||
}
|
||||
|
||||
async function exists(name) {
|
||||
return db.exists("users", "Username", name);
|
||||
return db.exists("Users", "username", name);
|
||||
}
|
||||
|
||||
async function createUser(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]);
|
||||
return;
|
||||
}
|
||||
|
||||
async function deleteUser(name) {
|
||||
db.prepare("DELETE FROM users WHERE Username = ?", [name]);
|
||||
db.prepare("DELETE FROM Users WHERE username = ?", [name]);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue