Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
Term for: schools.address.state (Stores the state abbreviation for a school's location)
* Term: schools.address.state
* Stores the state abbreviation for a school's location.
module.exports = {
table: 'school', // Entity table in DB
// `?state=tx` is supported (or would throw) here
filter: function(qb, value) {
// Compose query builder to only return schools in this state
qb.andWhere(this.get('column'), value.toUpperCase());
// Simple example how the UI was defined.
ui: {
type: 'radio',
query: function() {
// `this` has a dynamic context with services (e.g. `db`)
var qb = this.db('vars__HD2012__STABBR');
db.raw('code AS value'),
// How to fetch & store the data
warehouse: {
// Map the original column's value dynamically
// (terms are agnostic to exactly where they're stored)
query: function(qb) {
qb.column(qb.knex.raw('HD2012.STABBR as `' + this.get('tableColumn') + '`'));
// Define the schema needed for the normalized value.
// Any changes here automatically became migrations (e.g. `.index()`)
schema: function(table) {
table.string(this.get('column'), 2).index();
// Transform the value (or combine multiple columns, like `${city}, ${state}`)
value: function(row) {
return row[this.get('tableColumn')];
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment