feat: Added base for users support
This commit is contained in:
parent
480df977fb
commit
491f16b8f9
|
@ -1,10 +1,11 @@
|
||||||
|
const handleError = require("../middleware/errors");
|
||||||
|
|
||||||
async function helloWorld(req, res) {
|
async function helloWorld(req, res) {
|
||||||
try {
|
try {
|
||||||
const query_result = "Hello there!";
|
const query_result = "Unknown development version";
|
||||||
res.send(query_result);
|
res.send(query_result);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.debug("Error at HelloWorld controller");
|
handleError(error);
|
||||||
res.status(500).json({ error: error.message });
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
47
src/controllers/users.js
Normal file
47
src/controllers/users.js
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
const handleError = require("../middleware/errors");
|
||||||
|
const user_service = require("../services/userService")
|
||||||
|
|
||||||
|
async function getAllUsers(req, res) {
|
||||||
|
try {
|
||||||
|
console.debug("Calling controller");
|
||||||
|
const query_result = await user_service.getAllUsers();
|
||||||
|
res.json(query_result);
|
||||||
|
} catch (error) {
|
||||||
|
console.error("ERROR: Couldn't get users: ");
|
||||||
|
handleError(error, req, res, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function getUserByName(req, res) {
|
||||||
|
try {
|
||||||
|
const query_result = await user_service.getUserByName(req.params.name);
|
||||||
|
res.json(query_result);
|
||||||
|
} catch (error) {
|
||||||
|
console.error("ERROR: Couldn't get user " + req.params.name + ": ");
|
||||||
|
handleError(error, req, res, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function createUser(req, res) {
|
||||||
|
try {
|
||||||
|
await user_service.createUser(req.body);
|
||||||
|
res.sendStatus(200);
|
||||||
|
} catch (error) {
|
||||||
|
console.error("ERROR: Couldn't create user:", error.message);
|
||||||
|
handleError(error, req, res, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function deleteUser(req, res) {
|
||||||
|
try {
|
||||||
|
await user_service.deleteUser(req.params.name);
|
||||||
|
return res.sendStatus(200);
|
||||||
|
} catch (error) {
|
||||||
|
console.error("ERROR: Couldn't delete user " + req.params.name + ":", error.message);
|
||||||
|
handleError(error, req, res, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
module.exports = { getAllUsers, getUserByName, createUser, deleteUser };
|
55
src/models/user.js
Normal file
55
src/models/user.js
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
const { getDatabase } = require('../database/index');
|
||||||
|
const AppError = require('../utils/appError');
|
||||||
|
const db = getDatabase();
|
||||||
|
|
||||||
|
async function getAllUsers() {
|
||||||
|
return db.query("SELECT * FROM users");
|
||||||
|
}
|
||||||
|
|
||||||
|
async function getUserByName(name) {
|
||||||
|
try {
|
||||||
|
console.debug("Searching for", name);
|
||||||
|
const res = await db.query("SELECT * FROM users WHERE Name = ?;", [name]);
|
||||||
|
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) {
|
||||||
|
return db.exists("users", "Name", name);
|
||||||
|
}
|
||||||
|
|
||||||
|
async function createUser(user_data) {
|
||||||
|
|
||||||
|
const { name, email, password, displayName, profilePicture, favorites, preferences } = user_data;
|
||||||
|
|
||||||
|
await db.prepare("INSERT INTO users (Name, Email, Password, DisplayName, ProfilePicture, Favorites, Preferences) \
|
||||||
|
VALUES (?, ?, ?, ?)", [name, email, password, displayName, profilePicture, favorites, preferences]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function deleteUser(name) {
|
||||||
|
db.prepare("DELETE FROM users WHERE Name = ?", [name]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// --- WIP ---
|
||||||
|
|
||||||
|
async function updateUser(user_data) {
|
||||||
|
console.log("WARNING: using a WIP function : updateUser (userels/users.js)");
|
||||||
|
throw new AppError(501, "Not implemented");
|
||||||
|
// const { name, description } = user_data;
|
||||||
|
// return db.query("INSERT INTO users (name, description) VALUES (?, ?)", [name, description]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
module.exports = { getAllUsers, getUserByName, createUser, deleteUser, exists }
|
|
@ -8,4 +8,8 @@ router.get('/', (res, req) => {
|
||||||
controller.helloWorld(res, req);
|
controller.helloWorld(res, req);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
router.get('/version', (res, req) => {
|
||||||
|
controller.getVersion(res, req);
|
||||||
|
});
|
||||||
|
|
||||||
module.exports = router;
|
module.exports = router;
|
|
@ -15,14 +15,14 @@ router.post("/", async (req, res) => {
|
||||||
controller.createMod(req, res);
|
controller.createMod(req, res);
|
||||||
})
|
})
|
||||||
|
|
||||||
//
|
// Get mod infos
|
||||||
router.get("/:name", async (req,res) => {
|
router.get("/:name", async (req,res) => {
|
||||||
const name = req.params.name;
|
const name = req.params.name;
|
||||||
console.debug("Accessing mod " + name)
|
console.debug("Accessing mod " + name)
|
||||||
controller.getModByName(req, res);
|
controller.getModByName(req, res);
|
||||||
});
|
});
|
||||||
|
|
||||||
//
|
// Delete mod
|
||||||
router.delete("/:name", async (req,res) => {
|
router.delete("/:name", async (req,res) => {
|
||||||
const name = req.params.name;
|
const name = req.params.name;
|
||||||
console.debug("Deleting mod " + name)
|
console.debug("Deleting mod " + name)
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
const express = require("express");
|
||||||
|
const controller = require("../controllers/users");
|
||||||
|
|
||||||
|
const router = express.Router();
|
||||||
|
|
||||||
|
// List users
|
||||||
|
router.get("/", async (req,res) => {
|
||||||
|
console.debug("Accessing users list");
|
||||||
|
controller.getAllUsers(req,res);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Create a user
|
||||||
|
router.post("/", async (req, res) => {
|
||||||
|
console.debug("Creating user ", req.body.name);
|
||||||
|
controller.createUser(req, res);
|
||||||
|
})
|
||||||
|
|
||||||
|
// Get user infos
|
||||||
|
router.get("/:name", async (req,res) => {
|
||||||
|
const name = req.params.name;
|
||||||
|
console.debug("Accessing user " + name)
|
||||||
|
controller.getUserByName(req, res);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Delete user
|
||||||
|
router.delete("/:name", async (req,res) => {
|
||||||
|
const name = req.params.name;
|
||||||
|
console.debug("Deleting user " + name)
|
||||||
|
controller.deleteUser(req, res);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
module.exports = router;
|
45
src/services/userService.js
Normal file
45
src/services/userService.js
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
const model = require("../models/user");
|
||||||
|
const AppError = require("../utils/appError");
|
||||||
|
const { validateUserData } = require("../utils/validate");
|
||||||
|
const { sanitizeUserData } = require("../utils/sanitize");
|
||||||
|
|
||||||
|
async function getAllUsers() {
|
||||||
|
return model.getAllUsers();
|
||||||
|
}
|
||||||
|
|
||||||
|
async function getUserByName(name) {
|
||||||
|
return model.getUserByName(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
async function createUser(user_data) {
|
||||||
|
|
||||||
|
// Check body validity
|
||||||
|
await validateUserData(user_data);
|
||||||
|
|
||||||
|
// Check authenticity
|
||||||
|
//TODO no auth provider
|
||||||
|
|
||||||
|
// Sanitize
|
||||||
|
await sanitizeUserData(user_data);
|
||||||
|
|
||||||
|
console.debug("Passed validity checks");
|
||||||
|
model.createUser(user_data);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function deleteUser(name) {
|
||||||
|
|
||||||
|
// Check existence
|
||||||
|
const exists = await model.exists(name);
|
||||||
|
if (!exists) {
|
||||||
|
throw new AppError(404, "Not found: Cannot find user with this name");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check authenticity
|
||||||
|
//TODO no auth provider
|
||||||
|
|
||||||
|
model.deleteUser(name);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = { getAllUsers, getUserByName, createUser, deleteUser };
|
0
src/utils/configManager.js
Normal file
0
src/utils/configManager.js
Normal file
Loading…
Reference in a new issue