Skip to content

Instantly share code, notes, and snippets.

@kwhitley
Created August 29, 2013 22:23
Show Gist options
  • Save kwhitley/6384138 to your computer and use it in GitHub Desktop.
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...
/**
* 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