From 59b552504b687ec97689027ed2a375fe216c1cfd Mon Sep 17 00:00:00 2001 From: shifat97 Date: Sat, 4 Oct 2025 13:24:25 +0600 Subject: [PATCH 1/2] backend: add endpoint to get specific job for a company --- backend/src/controllers/jobController.ts | 12 ++++++++++++ backend/src/routes/jobRouter.ts | 1 + backend/src/services/jobServices.ts | 9 +++++++++ 3 files changed, 22 insertions(+) diff --git a/backend/src/controllers/jobController.ts b/backend/src/controllers/jobController.ts index 1565f68..e24a271 100644 --- a/backend/src/controllers/jobController.ts +++ b/backend/src/controllers/jobController.ts @@ -17,3 +17,15 @@ export const getAllJobs = async (req: Request, res: Response) => { status: 'success', }); }; + +export const getJob = async (req: Request, res: Response) => { + const { companyId, jobId } = req.params; + const job = await jobServices.getJob(companyId, jobId); + + if (job?.deletedAt != null) { + res.status(404).json({ message: 'No job found', status: 'failed' }); + return; + } + + res.status(200).json({ data: job, status: 'success' }); +}; diff --git a/backend/src/routes/jobRouter.ts b/backend/src/routes/jobRouter.ts index a328039..7633165 100644 --- a/backend/src/routes/jobRouter.ts +++ b/backend/src/routes/jobRouter.ts @@ -11,5 +11,6 @@ router.post( jobController.createJob, ); router.get('/:companyId/jobs', jobController.getAllJobs); +router.get('/:companyId/jobs/:jobId', jobController.getJob); export default router; diff --git a/backend/src/services/jobServices.ts b/backend/src/services/jobServices.ts index d50fa66..bb50c0b 100644 --- a/backend/src/services/jobServices.ts +++ b/backend/src/services/jobServices.ts @@ -31,3 +31,12 @@ export const getAllJobs = async ( limit, }; }; + +export const getJob = async (companyId: string, jobId: string) => { + const job = await JobModel.findOne({ + company: companyId, + _id: jobId, + }); + + return job; +}; From deb699648f8791285b89c13a054b34329f06f155 Mon Sep 17 00:00:00 2001 From: shifat97 Date: Sat, 4 Oct 2025 13:28:07 +0600 Subject: [PATCH 2/2] backend: populate company model on request --- backend/src/services/jobServices.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/services/jobServices.ts b/backend/src/services/jobServices.ts index bb50c0b..29103a9 100644 --- a/backend/src/services/jobServices.ts +++ b/backend/src/services/jobServices.ts @@ -36,7 +36,7 @@ export const getJob = async (companyId: string, jobId: string) => { const job = await JobModel.findOne({ company: companyId, _id: jobId, - }); + }).populate('company'); return job; };