Skip to content

Commit 39ea8a4

Browse files
committed
Added roadmap resource
1 parent 3e627d5 commit 39ea8a4

File tree

3 files changed

+81
-0
lines changed

3 files changed

+81
-0
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import { crudControllers } from '../../utils/crud';
2+
import roadmapModel from './roadmap.model';
3+
import subjectModel from '../subject/subject.model';
4+
5+
export const getRoadmap = async (req: any, res: any) => {
6+
try {
7+
const roadmap = await roadmapModel
8+
.findOne({ name: req.params.name })
9+
.lean()
10+
.exec();
11+
12+
if (!roadmap) {
13+
return res.status(400).end();
14+
}
15+
16+
const subjects = await subjectModel
17+
.find({ roadmap: roadmap._id })
18+
.lean()
19+
.exec();
20+
21+
if (!subjects) {
22+
return res.status(400).end();
23+
}
24+
25+
const data = {
26+
...roadmap,
27+
subjects,
28+
};
29+
res.status(200).json({ data });
30+
} catch (e) {
31+
console.error(e);
32+
res.status(400).end();
33+
}
34+
};
35+
36+
export default {
37+
...crudControllers(roadmapModel),
38+
getRoadmap,
39+
};
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import mongoose from 'mongoose';
2+
3+
const roadmapSchema = new mongoose.Schema(
4+
{
5+
name: {
6+
type: String,
7+
unique: true,
8+
required: true,
9+
},
10+
title: {
11+
type: String,
12+
unique: true,
13+
required: true,
14+
},
15+
description: {
16+
type: String,
17+
required: true,
18+
},
19+
},
20+
{
21+
writeConcern: {
22+
w: 'majority',
23+
j: true,
24+
wtimeout: 1000,
25+
},
26+
timestamps: true,
27+
}
28+
);
29+
30+
export default mongoose.model('roadmap', roadmapSchema);
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { Router } from 'express';
2+
import roadmapControllers from './roadmap.controllers';
3+
4+
const router = Router();
5+
6+
// /roadmaps
7+
router.route('/').get(roadmapControllers.getMany);
8+
9+
// /roadmaps/:name
10+
router.route('/:name').get(roadmapControllers.getRoadmap);
11+
12+
export default router;

0 commit comments

Comments
 (0)