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) {
|
||||
try {
|
||||
const query_result = "Hello there!";
|
||||
const query_result = "Unknown development version";
|
||||
res.send(query_result);
|
||||
} catch (error) {
|
||||
console.debug("Error at HelloWorld controller");
|
||||
res.status(500).json({ error: error.message });
|
||||
handleError(error);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
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);
|
||||
});
|
||||
|
||||
router.get('/version', (res, req) => {
|
||||
controller.getVersion(res, req);
|
||||
});
|
||||
|
||||
module.exports = router;
|
|
@ -15,14 +15,14 @@ router.post("/", async (req, res) => {
|
|||
controller.createMod(req, res);
|
||||
})
|
||||
|
||||
//
|
||||
// Get mod infos
|
||||
router.get("/:name", async (req,res) => {
|
||||
const name = req.params.name;
|
||||
console.debug("Accessing mod " + name)
|
||||
controller.getModByName(req, res);
|
||||
});
|
||||
|
||||
//
|
||||
// Delete mod
|
||||
router.delete("/:name", async (req,res) => {
|
||||
const name = req.params.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