You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

98 lines
3.4 KiB

import { deleteStudent, updateStudent, addStudent, setUserName, getUsersFromAdmin, getUserByEmail } from "../queries/userQueries.js";
import { getAdminID } from "../queries/adminQueries.js";
import { Router } from "express";
import bcrypt from "bcrypt";
const router = Router();
// add a student to the database
router.post('/AddStudent', async (req,res) => {
const { name, email, Aemail, password } = req.body;
try{
const Admin = await getAdminID(Aemail);
const saltRounds = 10;
const hashedPassword = await bcrypt.hash(password, saltRounds);
const result = await addStudent(name, email, hashedPassword, Admin);
return res.status(200).json({success: true});
} catch(err){
console.error("Error adding student", err.message);
return res.statusMessage(500).json({error: "Could not add student"});
}
});
// update a student in the database
router.post('/UpdateStudent', async (req,res) => {
const { email, password } = req.body;
try{
const saltRounds = 10;
const hashedPassword = await bcrypt.hash(password, saltRounds);
const result = await updateStudent(email, hashedPassword);
if(result.affectedRows === 0)
return res.status(404).json({error: "Student not found"});
return res.status(200).json({success: true});
} catch(err){
console.error('Error updating student:', err.message);
return res.status(500).json({error: "Could not update password"});
}
});
// delete a student from the database
router.post('/DeleteStudent', (req,res) => {
const {email} = req.body;
deleteStudent(email).then((result) => {
if(result.affectedRows === 0)
return res.status(404).json({error: "NO STUDENT"});
return res.status(200).json({success: true});
}).catch((err) => {
console.error(err.message);
return res.status(500).json({error: "COULD NOT DELETE STUDENT"});
});
});
// get all of the users with the same key as admin
router.post('/getAllUsers', (req,res) => {
const { email } = req.body;
return getAdminID(email).then((Admin) => {
return getUsersFromAdmin(Admin).then((users) => {
if(users.length === 0)
res.status(404).json({error: "NO ADMIN/USERS FOUND"});
else
res.json(users);
}).catch((err) => {
console.error(err.message);
res.status(500).json({error: "COULD NOT FIND USER"});
});
}).catch((err) => {
console.error(err.message);
res.status(500).json({error: "COULD NOT FIND ADMIN"});
});
});
// return everything on a user by email
router.post('/getUser', async(req,res) => {
const { email } = req.body;
return getUserByEmail('Users',email).then((row) => {
if (row) res.json(row);
else return res.status(404).json({ error: 'USER NOT FOUND' });
})
});
router.post('/getUsername', async(req,res) => {
const { email } = req.body;
return getUserByEmail('Users',email).then((row) => {
if (row) res.json(row.Name);
else return res.status(404).json({ error: 'USER NOT FOUND' });
})
});
// set the new name of the user
router.post('/setUserName', async (req,res) => {
const { name, email } = req.body;
try{
await setUserName(name, email);
res.status(200).json({success: true});
}catch(err){
console.error(err.message);
res.status(500).json({error: err.message});
}
});
export default router;