feat: Updated database model
This commit is contained in:
parent
ce806ef426
commit
32a5c97c02
|
@ -11,11 +11,11 @@ async function connectDatabase() {
|
||||||
|
|
||||||
// Choose database type
|
// Choose database type
|
||||||
if (config.type === "mysql") {
|
if (config.type === "mysql") {
|
||||||
db = new MySQLDatabase(config);
|
db = new MySQLDatabase(config);
|
||||||
} else if (config.type === "sqlite") {
|
} else if (config.type === "sqlite") {
|
||||||
db = new SQLiteDatabase(config);
|
db = new SQLiteDatabase(config);
|
||||||
} else {
|
} else {
|
||||||
throw new Error("Invalid database type: ", config.type);
|
throw new Error("Invalid database type: ", config.type);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Connect
|
// Connect
|
||||||
|
@ -32,32 +32,30 @@ 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
|
||||||
// if (!(await db.exists("users", "Username", config.users.admin.username))) {
|
// if (!(await db.exists("users", "Username", config.users.admin.username))) {
|
||||||
|
@ -69,7 +67,7 @@ async function initDatabase() {
|
||||||
|
|
||||||
|
|
||||||
function getDatabase() {
|
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();
|
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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue