File tree 4 files changed +54
-0
lines changed 4 files changed +54
-0
lines changed Original file line number Diff line number Diff line change
1
+ Meteor . methods ( {
2
+ 'search_courses' : function ( text : String ) {
3
+ console . log ( "searching courses" ) ;
4
+ }
5
+ } ) ;
Original file line number Diff line number Diff line change @@ -60,6 +60,8 @@ The following document describes the MongoDB Schema used by the TuxLab app:
60
60
course_number: " 15-131" ,
61
61
course_name: " Great Practical Ideas for Computer Scientists" ,
62
62
instructor_ids: [" 948fhp23irjer9823r3rwef" , " 573de804b17eca6c452d9ff7" ],
63
+ hidden: true , // Course is hidden from students. Default is true.
64
+ disabled: false , // Enrollment for course is unavailable. Default is false.
63
65
course_description: {
64
66
content: " This is the course description." ,
65
67
syllabus: " This is the course syllabus"
Original file line number Diff line number Diff line change
1
+ var async = require ( 'async' ) ;
2
+ var future = require ( 'fibers/future' ) ;
3
+
4
+ Meteor . methods ( {
5
+ 'search_courses' : function ( text : String , results_per_page : Number , page_no : Number ) {
6
+
7
+ var courses = Collections . courses ;
8
+
9
+ var search_pattern = new RegExp ( text , "i" ) ;
10
+ if ( results_per_page <= 0 || results_per_page > 200 ) results_per_page = 200 ;
11
+
12
+ var search_object =
13
+ { $and : [
14
+ { "hidden" : false } ,
15
+ { $or : [
16
+ { "course_number" : search_pattern } ,
17
+ { $where : "this.course_number.replace(/[ .-]/g,'') == '" + text + "'" } ,
18
+ { "course_name" : search_pattern }
19
+ ] }
20
+ ] } ;
21
+
22
+ var search_options =
23
+ { limit : results_per_page ,
24
+ skip : results_per_page * page_no ,
25
+ fields : {
26
+ "course_number" : 1 ,
27
+ "course_name" : 1 ,
28
+ "instructor_ids" : 1 ,
29
+ "course_description" : 1 }
30
+ } ;
31
+
32
+ var result = new future ( ) ;
33
+
34
+ async . parallel (
35
+ {
36
+ "course_count" : function ( callback ) { callback ( null , courses . find ( search_object ) . count ( ) ) ; } ,
37
+ "course_results" : function ( callback ) { callback ( null , courses . find ( search_object , search_options ) . fetch ( ) ) ; }
38
+ } ,
39
+ function ( err , results ) {
40
+ if ( err ) result . throw ( error ) ;
41
+ result . return ( results ) ;
42
+ } ) ;
43
+
44
+ return result . wait ( ) ;
45
+ }
46
+ } ) ;
Original file line number Diff line number Diff line change @@ -43,3 +43,4 @@ var NodeCache = require('node-cache');
43
43
44
44
//import Meteor Methods
45
45
import "./imports/lab/methods.ts"
46
+ import "./imports/course/methods.ts"
You can’t perform that action at this time.
0 commit comments