UNPKG

worm

Version:

Whatever ORM

125 lines (108 loc) 2.55 kB
var $ = require('../../'), debug = require('debug')('worm:test'), adapter_name = 'sql', // default adapter opts, adapter; if (process.env.ADAPTER) { adapter_name = process.env.ADAPTER; } if (adapter_name === 'sql') { opts = 'postgres://localhost/level2'; if (process.env.TRAVIS) { opts = 'postgres://postgres:@localhost/level2'; } } adapter = $.adapter($.adapters[adapter_name](opts), 'test2'); var pretest = function (cb) { debug('Flushing database'); $.cache.clear(next); function next() { if (adapter_name === 'sql') { adapter.raw.query('TRUNCATE TABLE people;TRUNCATE TABLE passports;', cb); } else { adapter.flush(cb); } } }; // @TODO: make it easy to build models with model builder functions? etc. // @TODO: make it easy to take Sequelize model and convert it? var Person = $.model({ name: 'Person', attributes: [ 'id', 'name', 'passport_id', 'bestfriend_id' ], relationships: { passport: { type: 'hasOne', model: 'Passport' }, bestFriend: { // self reference... watch out for recursion! // also, best friend could be yourself! test edge cases type: 'hasOne', model: 'Person' } // @TODO: how to handle polymorphic relationships? // For example: object_id, and object_type // How about: //something: { //type: 'hasOne', //model: { attribute: 'something_type' } // or //model: function (obj) { //return obj.something_type; //} //} }, //@TODO //map: { //sql: { ////adapter specific configuration. anything can go here from ////functions to objects? that can help the adapter translate the ////javascript representation to database representation //} //}, adapters: [ 'test2' ] }); var Passport = $.model({ name: 'Passport', attributes: [ 'id', 'code', 'country' ], relationships: { person: { type: 'belongsTo', //make sure its linked both ways! model: 'Person' } }, adapters: [ 'test2' ] }); var passportoli = { code: '1337', country: 'Canada' }; var passportderek = { code: 'SGP123', country: 'Singapore' }; var passportcasey = { code: 'US123', country: 'USA' }; var oli = { name: 'oli', }; var derek = { name: 'derek', }; var casey = { name: 'casey', }; module.exports = { pretest: pretest, Person: Person, Passport: Passport, oli: oli, derek: derek, casey: casey, passportoli: passportoli, passportderek: passportderek, passportcasey: passportcasey };