163 lines
4 KiB
JavaScript
163 lines
4 KiB
JavaScript
const express = require("express");
|
|
const { PrismaClient } = require("@prisma/client");
|
|
const bcrypt = require("bcrypt");
|
|
|
|
const app = express();
|
|
const prisma = new PrismaClient();
|
|
|
|
const port = process.env.NODE_PORT || 3000;
|
|
|
|
app.use(express.json());
|
|
app.use(express.urlencoded({ extended: true }));
|
|
|
|
//function to conver req.body to assignment
|
|
function convertToAssignment(req) {
|
|
const {
|
|
campid,
|
|
programid,
|
|
studentname,
|
|
snakegameid,
|
|
originalfile,
|
|
editablefile,
|
|
assignmenturl,
|
|
password,
|
|
instructorid
|
|
} = req.body;
|
|
|
|
// const hashedPassword = await bcrypt.hash(Password, 10);
|
|
return {
|
|
campid: campid,
|
|
programid: programid,
|
|
studentname: studentname,
|
|
snakegameid: snakegameid,
|
|
originalfile: originalfile,
|
|
editablefile: editablefile,
|
|
assignmenturl: assignmenturl,
|
|
// passwordhash: hashedpassword,
|
|
passwordhash: password,
|
|
instructorid: instructorid,
|
|
};
|
|
}
|
|
|
|
// Create Assignment
|
|
app.post("/assignments", async (req, res) => {
|
|
try {
|
|
console.log("Request body:", req.body);
|
|
|
|
// const {
|
|
// campid,
|
|
// programid,
|
|
// studentname,
|
|
// snakegameid,
|
|
// originalfile,
|
|
// editablefile,
|
|
// assignmenturl,
|
|
// password,
|
|
// instructorid
|
|
// } = req.body;
|
|
|
|
// const hashedPassword = await bcrypt.hash(Password, 10);
|
|
const newAssignment = await prisma.assignments.create({
|
|
data: {
|
|
...convertToAssignment(req)
|
|
},
|
|
});
|
|
|
|
console.log("Assignment created successfully:", newAssignment);
|
|
|
|
res.json({
|
|
message: "Assignment created successfully",
|
|
assignment: newAssignment,
|
|
});
|
|
} catch (err) {
|
|
console.error("Error creating assignment:", err.message);
|
|
res.status(500).json({ error: err.message });
|
|
}
|
|
});
|
|
|
|
// Get Assignments by InstructorID
|
|
app.get("/assignments/instructor/:instructorId", async (req, res) => {
|
|
try {
|
|
const { instructorId } = req.params;
|
|
console.log("InstructorID:", instructorId);
|
|
const assignments = await prisma.assignments.findMany({
|
|
where: { instructorid: parseInt(instructorId) },
|
|
});
|
|
|
|
if (assignments.length === 0) {
|
|
return res
|
|
.status(404)
|
|
.json({ message: "No assignments found for this instructor" });
|
|
}
|
|
|
|
res.json(assignments);
|
|
} catch (err) {
|
|
console.error("Error fetching assignments:", err.message);
|
|
res.status(500).json({ error: err.message });
|
|
}
|
|
});
|
|
|
|
// Read Assignment
|
|
app.get("/assignments/:id", async (req, res) => {
|
|
try {
|
|
const assignment = await prisma.assignments.findUnique({
|
|
where: { assignmentid: parseInt(req.params.id) },
|
|
});
|
|
|
|
if (!assignment) {
|
|
return res.status(404).json({ message: "Assignment not found" });
|
|
}
|
|
|
|
res.json(assignment);
|
|
} catch (err) {
|
|
console.error("Error fetching assignment:", err.message);
|
|
res.status(500).json({ error: err.message });
|
|
}
|
|
});
|
|
|
|
// Update Assignment
|
|
app.put("/assignments/:id", async (req, res) => {
|
|
try {
|
|
const { id } = req.params;
|
|
const data = req.body;
|
|
|
|
if (data.password) {
|
|
// data.passwordhash = await bcrypt.hash(data.Password, 10);
|
|
data.passwordhash = data.password;
|
|
delete data.password;
|
|
}
|
|
|
|
const updatedAssignment = await prisma.assignments.update({
|
|
where: { assignmentid: parseInt(id) },
|
|
data,
|
|
});
|
|
|
|
res.json({
|
|
message: "Assignment updated successfully",
|
|
assignment: updatedAssignment,
|
|
});
|
|
} catch (err) {
|
|
console.error("Error updating assignment:", err.message);
|
|
res.status(500).json({ error: err.message });
|
|
}
|
|
});
|
|
|
|
// Delete Assignment
|
|
app.delete("/assignments/:id", async (req, res) => {
|
|
try {
|
|
const { id } = req.params;
|
|
|
|
await prisma.assignments.delete({
|
|
where: { assignmentid: parseInt(id) },
|
|
});
|
|
|
|
res.json({ message: "Assignment deleted successfully" });
|
|
} catch (err) {
|
|
console.error("Error deleting assignment:", err.message);
|
|
res.status(500).json({ error: err.message });
|
|
}
|
|
});
|
|
|
|
app.listen(port, () => {
|
|
console.log(`Server running at http://localhost:${port}`);
|
|
});
|