-
Notifications
You must be signed in to change notification settings - Fork 0
server.mjs
up2108272 edited this page May 9, 2024
·
2 revisions
- Runs server for recieving and responding to http requests
server.post('/new-user', (req, res) =>{
log("///", 1);
log('Creating new user', 1);
log(req.body, 1);
log("ROLE: " + req.body[5], 1);
if (req.body[5] == "student") {
lf.createStudent(req.body[0], req.body[1], req.body[2], req.body[3], req.body[4]);
log("///\n", 1);
res.send({Success: "Student added to db"});
}
else if (req.body[5] == "lecturer") {
lf.createLecturer(req.body[0], req.body[1], req.body[2], req.body[3], req.body[4]);
log("///\n", 1);
res.send({Success: "Lecturer added to db"});
}
else {
log("Invalid user role\n///\n", 1);
res.send({Error: "Invalid user role provided"});
}
});- Handles requests to create a new user
server.post('/get-profile', (req, res) => {
log("///", 1);
log("GOT PROFILE REQ FOR USER ID: " + req.body, 1);
if(req.body != "") {
lf.getProfile(req.body, (profileData) => {
if(profileData[0] == "ERROR") {
log("Error retrieving profile data", 1);
log("///\n", 1);
res.send({Error: "Error retrieving profile data"});
}
else {
log("Sending Data", 1);
log("///\n", 1);
res.send(JSON.stringify(profileData));
}
});
}
else {
log("EMPTY USER ID", 1)
log("///\n", 1);
res.send({Error: "Failed to retrieve profile: Empty request data"});
}
});- Handles requests for profile data
- Sends back requested data if found
server.post("/update-user", (req, res) => {
log("///\nUPDATE USER REQUEST", 1);
console.log(req.body);
if(req != null) {
log("SENDING TO DB", 1);
lf.updateUserProfile(req.body[0], req.body[1], req.body[2], () => {});
res.send({Success: "Successfully updated"});
}
else {
log("FAILED\n///\n", 1);
res.send({Error: "Failed to update user info: request empty"});
}
});- Handles requests to update user information
server.post("/upload-quiz", (req, res) => {
if(req != null) {
lf.createQuiz(req.body[0], req.body[1], req.body[2]);
}
else {
log(req.body, 1);
log("Failed to create quiz: request empty", 1);
res.send({Error: "Failed to create quiz: request empty"});
}
});- Handles requests to create new quizzes
server.post("/create-class", (req, res) => {
// format: lecturerId, className, joinCode
if(req != null) {
console.log(req.body);
lf.createClass(req.body[0], req.body[1], req.body[2], (err) =>{
if (err == "UNAVAILABLE") {
res.send({Error: "that join code is unavailable"});
}
});
}
else {
log("Error creating class: request empty");
}
});- Handles requests to create a new class
server.post("/join-class", (req, res) => {
// format: studentId, joinCode
if(req != null) {
lf.addStudentToClass(req.body[0], req.body[1], (ret) => {
if(ret == "ERROR") {
res.send({Error: "Error adding student to class"});
console.log("Error adding student to class");
}
else {
console.log("Successfully joined class");
res.send({Success: "Successfully joined class"});
}
});
}
else {
log("Error joining class: request empty", 1);
res.send({Error: "Error joining class: request empty"});
}
});- Handles requests to add student to a class
server.post("/get-classes-lecturer", (req, res) => {
// format: lecturerId
if(req != null) {
lf.getClassesFromLecturer(req.body, (classes) => {
res.send(JSON.stringify(classes));
})
}
else {
res.send({Error: "No data was sent with request"});
}
});- Handles requests to retrieve all classes made by a lecturer
server.post("/get-classes-student", (req, res) => {
if(req != null) {
lf.getClassesFromStudent(req.body, (classes) => {
res.send(JSON.stringify(classes));
})
}
else {
res.send({Error: "No data was sent with request"});
}
})- Handles requests to retrieve all classes that a given student is apart of
export function getQuizzesFromClass(joinCode, callback) {
openDb((res) => {
if(res) {
let sql = `SELECT quiz_details.quiz_id, quiz_details.creator_id, quiz_details.quiz_title, quiz_details.quiz_data
FROM quiz_details
JOIN assignment_details
WHERE quiz_details.quiz_id = assignment_details.quiz_id
AND assignment_details.class_id = '` + joinCode + `';`;
db.all(sql, [], (err, rows) => {
if(err) {
callback(err.message);
return console.log(err.message);
}
let data = [];
rows.forEach((row) => {
data.push(row);
})
callback(data);
});
}
})
}- Handles requests to retrieve all quizzes assigned to a particular class
export function addQuizToClass(quizId, joinCode, description, callback) {
openDb((res) => {
if(res) {
let checkSql = `SELECT * FROM quiz_details WHERE quiz_id = '` + quizId + `';`;
db.get(checkSql, [], (err, row) => {
if(err) {
callback(err.message);
return console.log(err.message);
}
else{
if (row == undefined) {
callback("Quiz ID doesn't exist");
return;
}
else {
let sql = `INSERT INTO assignment_details (class_id, quiz_id, issue_date, description) VALUES (?, ?, TIME('now'), ?)`;
db.run(sql, [joinCode, quizId, description], (err) => {
if(err){
callback(err.message);
return console.log(err.message);
}
else {
callback("SUCCESS");
}
});
}
}
});
}
})
}- Handles requests to assign a quiz to a given class
learnforge wiki!