Created
August 29, 2013 22:23
-
-
Save kwhitley/6384138 to your computer and use it in GitHub Desktop.
How to best hydrate a relational sql dump? Ideally with unknown tables and unknown columns. Notice school_provider_program.id is even mapped to school.programs.id in the results...
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Module dependencies | |
*/ | |
var express = require('express'); | |
var app = module.exports = express(); | |
var Knex = require('knex'); | |
var _ = require('lodash'); | |
if ('development' === app.get('env')) { | |
var db = Knex.Initialize({ | |
client: 'mysql', | |
connection: { | |
host: '33.33.33.10', | |
user: 'root', | |
database: 'cddirect_dev' | |
} | |
}); | |
} | |
// Fetch specific model from collection | |
app.get('/api/top-available-schools', function(req, res) { | |
var q = req.query; | |
q.select = q.select && q.select.split(','); | |
db('school') | |
.select([ | |
'school.id AS id', | |
'school.name AS name', | |
'school_provider.name AS provider+name', | |
'school.slug AS slug', | |
'school_program.name AS programs+name', | |
'school_provider_program.id AS programs+id', | |
'school_provider.cpl AS provider+cpl' | |
]) | |
.join('school_provider', 'school.active_provider_id', '=', 'school_provider.id') | |
.join('school_program', 'school_program.school_id', '=', 'school.id') | |
.join('school_provider_program', 'school_provider_program.school_program_id', '=', 'school_program.id') | |
.andWhere('school.is_enabled', '=', 1) | |
.orderBy('school.priority', 'desc') | |
.limit(q.limit || 3) | |
.then(function(results) { | |
res.send(expand(results)); | |
}) | |
; | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment