Upload apps/api/src/modules/jobs/routes.ts
Browse files
apps/api/src/modules/jobs/routes.ts
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import { Router } from 'express';
|
| 2 |
+
import { requireAuth, requireRole, AuthRequest } from '../auth/middleware';
|
| 3 |
+
|
| 4 |
+
const router = Router();
|
| 5 |
+
|
| 6 |
+
router.use(requireAuth);
|
| 7 |
+
|
| 8 |
+
router.get('/', async (req: AuthRequest, res) => {
|
| 9 |
+
// TODO: query jobs by org_id with cursor pagination
|
| 10 |
+
res.json({ data: { jobs: [], meta: { next_cursor: null, has_more: false } } });
|
| 11 |
+
});
|
| 12 |
+
|
| 13 |
+
router.post('/', requireRole('admin', 'recruiter'), async (req: AuthRequest, res) => {
|
| 14 |
+
const { title, description, location, deadline, required_skills } = req.body;
|
| 15 |
+
// TODO: insert into DB
|
| 16 |
+
const job = { id: 'job-' + Date.now(), title, status: 'draft', created_by: req.user!.id };
|
| 17 |
+
res.status(201).json({ data: job });
|
| 18 |
+
});
|
| 19 |
+
|
| 20 |
+
router.get('/:id', async (req: AuthRequest, res) => {
|
| 21 |
+
// TODO: fetch job with applications count
|
| 22 |
+
res.json({ data: { id: req.params.id, title: 'Senior React Developer' } });
|
| 23 |
+
});
|
| 24 |
+
|
| 25 |
+
router.post('/:id/publish', requireRole('admin', 'recruiter'), async (req: AuthRequest, res) => {
|
| 26 |
+
// TODO: update status to 'open'
|
| 27 |
+
res.json({ data: { id: req.params.id, status: 'open' } });
|
| 28 |
+
});
|
| 29 |
+
|
| 30 |
+
export { router as jobsRouter };
|