File tree Expand file tree Collapse file tree 3 files changed +81
-0
lines changed Expand file tree Collapse file tree 3 files changed +81
-0
lines changed Original file line number Diff line number Diff line change
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
+ } ;
Original file line number Diff line number Diff line change
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 ) ;
Original file line number Diff line number Diff line change
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 ;
You can’t perform that action at this time.
0 commit comments