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..29103a9 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, + }).populate('company'); + + return job; +};