Skip to content

server.mjs

up2108272 edited this page May 9, 2024 · 2 revisions

server.mjs

Basic information

  • 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

Clone this wiki locally