Switch data storage over to MongoDB.

Review Request #7235 — Created April 21, 2015 and submitted

Information

student-sonar
master
72ac013...

Reviewers

As sonar gets more complicated, it's no longer feasible to manually maintain a
big JSON file to store all the data. This change swaps that out in favor of
MongoDB, hosted via a heroku add-on.

The schema itself is currently identical to what I was using in students.json,
so there's very little to change on the front-end. The only difference is that
there's less depth to get to the actual students, since I removed the whole
top-level "term" nonsense.

The nice thing about this is that it will now be very easy to add lots of
functionality that requires the web server to be able to write data (such as
having students submit their status reports directly).

Verified that everything still loaded correctly.

Description From Last Updated

Why mongodbURL instead of mongodbURI ?

brenniebrennie

This doesn't seem to actually use app.

brenniebrennie

This is the exact same code as in bin/load-slack-users. Can we refactor this out into somewhere both modules can use …

brenniebrennie

Is there ever a case where we will be initializing mongoDB but not the schema (assuming the connection is successful) …

brenniebrennie
reviewbot
  1. Tool: Pyflakes
    Ignored Files:
        lib/config.js
        package.json
        server.js
        bin/load-slack-users
        lib/students.js
        lib/frontend/main.js
        lib/schema.js
        lib/routes.js
    
    
    
    Tool: PEP8 Style Checker
    Ignored Files:
        lib/config.js
        package.json
        server.js
        bin/load-slack-users
        lib/students.js
        lib/frontend/main.js
        lib/schema.js
        lib/routes.js
    
    
  2. 
      
brennie
  1. 
      
  2. lib/config.js (Diff revision 1)
     
     
    Show all issues

    Why mongodbURL instead of mongodbURI ?

    1. No reason. I'll change it.

  3. 
      
david
reviewbot
  1. Tool: PEP8 Style Checker
    Ignored Files:
        lib/config.js
        package.json
        server.js
        bin/load-slack-users
        lib/students.js
        lib/frontend/main.js
        lib/schema.js
        lib/routes.js
    
    
    
    Tool: Pyflakes
    Ignored Files:
        lib/config.js
        package.json
        server.js
        bin/load-slack-users
        lib/students.js
        lib/frontend/main.js
        lib/schema.js
        lib/routes.js
    
    
  2. 
      
brennie
  1. A few refactory nits, but it looks good to me!

  2. lib/routes.js (Diff revision 2)
     
     
    Show all issues

    This doesn't seem to actually use app.

  3. server.js (Diff revision 2)
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    Show all issues

    This is the exact same code as in bin/load-slack-users. Can we refactor this out into somewhere both modules can use it?

  4. server.js (Diff revision 2)
     
     
     
     
     
    Show all issues

    Is there ever a case where we will be initializing mongoDB but not the schema (assuming the connection is successful) ?

    If not, why don't we include this in the promise resolving function in initMongodb ?

  5. 
      
david
david
Review request changed
Status:
Completed
Change Summary:
Pushed to master (7963c22)