plplpl183 commited on
Commit
ba80dbe
·
verified ·
1 Parent(s): 90a2963

Upload apps/api/src/modules/jobs/routes.ts

Browse files
Files changed (1) hide show
  1. apps/api/src/modules/jobs/routes.ts +30 -0
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 };