diff --git a/backend/index.js b/backend/index.js index 6fd4225..173855f 100644 --- a/backend/index.js +++ b/backend/index.js @@ -51,9 +51,11 @@ app.use("/folders", foldersDeleteRoute); // "/cases" const casesIndexRoute = require("./routes/cases/index")(sequelize); +const casesShowRoute = require("./routes/cases/show")(sequelize); const casesNewRoute = require("./routes/cases/new")(sequelize); const casesEditRoute = require("./routes/cases/edit")(sequelize); app.use("/cases", casesIndexRoute); +app.use("/cases", casesShowRoute); app.use("/cases", casesNewRoute); app.use("/cases", casesEditRoute); diff --git a/backend/routes/cases/index.js b/backend/routes/cases/index.js index 9e1050b..e19738c 100644 --- a/backend/routes/cases/index.js +++ b/backend/routes/cases/index.js @@ -1,40 +1,16 @@ const express = require("express"); const router = express.Router(); const defineCase = require("../../models/cases"); -const defineStep = require("../../models/steps"); -const defineAttachment = require("../../models/attachments"); const { DataTypes } = require("sequelize"); module.exports = function (sequelize) { const Case = defineCase(sequelize, DataTypes); - const Step = defineStep(sequelize, DataTypes); - const Attachment = defineAttachment(sequelize, DataTypes); - Case.belongsToMany(Step, { through: "caseSteps" }); - Step.belongsToMany(Case, { through: "caseSteps" }); - Case.belongsToMany(Attachment, { through: "caseAttachments" }); - Attachment.belongsToMany(Case, { through: "caseAttachments" }); router.get("/", async (req, res) => { - const { caseId, folderId } = req.query; + const { folderId } = req.query; - if (!caseId && !folderId) { - return res.status(400).json({ error: "caseId or folderId is required" }); - } - - if (caseId) { - // Include steps if requested using caseId - const testcase = await Case.findByPk(caseId, { - include: [ - { - model: Step, - through: { attributes: ["stepNo"] }, - }, - { - model: Attachment, - }, - ], - }); - return res.json(testcase); + if (!folderId) { + return res.status(400).json({ error: "folderId is required" }); } try { diff --git a/backend/routes/cases/show.js b/backend/routes/cases/show.js new file mode 100644 index 0000000..a0c0399 --- /dev/null +++ b/backend/routes/cases/show.js @@ -0,0 +1,44 @@ +const express = require("express"); +const router = express.Router(); +const defineCase = require("../../models/cases"); +const defineStep = require("../../models/steps"); +const defineAttachment = require("../../models/attachments"); +const { DataTypes } = require("sequelize"); + +module.exports = function (sequelize) { + const Case = defineCase(sequelize, DataTypes); + const Step = defineStep(sequelize, DataTypes); + const Attachment = defineAttachment(sequelize, DataTypes); + Case.belongsToMany(Step, { through: "caseSteps" }); + Step.belongsToMany(Case, { through: "caseSteps" }); + Case.belongsToMany(Attachment, { through: "caseAttachments" }); + Attachment.belongsToMany(Case, { through: "caseAttachments" }); + + router.get("/:caseId", async (req, res) => { + const caseId = req.params.caseId; + + if (!caseId) { + return res.status(400).json({ error: "caseId is required" }); + } + + try { + const testcase = await Case.findByPk(caseId, { + include: [ + { + model: Step, + through: { attributes: ["stepNo"] }, + }, + { + model: Attachment, + }, + ], + }); + return res.json(testcase); + } catch (error) { + console.error(error); + res.status(500).send("Internal Server Error"); + } + }); + + return router; +}; diff --git a/frontend/app/projects/[projectId]/folders/[folderId]/cases/[caseId]/caseControl.ts b/frontend/app/projects/[projectId]/folders/[folderId]/cases/[caseId]/caseControl.ts index b411401..2be6553 100644 --- a/frontend/app/projects/[projectId]/folders/[folderId]/cases/[caseId]/caseControl.ts +++ b/frontend/app/projects/[projectId]/folders/[folderId]/cases/[caseId]/caseControl.ts @@ -5,7 +5,7 @@ const apiServer = Config.apiServer; * fetch case */ async function fetchCase(caseId: number) { - const url = `${apiServer}/cases?caseId=${caseId}`; + const url = `${apiServer}/cases/${caseId}`; try { const response = await fetch(url, {