UNPKG

orm

Version:

NodeJS Object-relational mapping

61 lines (45 loc) 1.42 kB
var _ = require("lodash"); var Sync = require("sql-ddl-sync").Sync; exports.sync = function (opts, cb) { var sync = new Sync({ driver : this, debug : false//function (text) { console.log(text); } }); var setIndex = function (p, v, k) { v.index = true; p[k] = v; }; var props = {}; if (this.customTypes) { for (var k in this.customTypes) { sync.defineType(k, this.customTypes[k]); } } sync.defineCollection(opts.table, opts.allProperties); for (var i = 0; i < opts.many_associations.length; i++) { props = {}; _.merge(props, opts.many_associations[i].mergeId); _.merge(props, opts.many_associations[i].mergeAssocId); props = _.transform(props, setIndex); _.merge(props, opts.many_associations[i].props); sync.defineCollection(opts.many_associations[i].mergeTable, props); } sync.sync(cb); return this; }; exports.drop = function (opts, cb) { var i, queries = [], pending; queries.push("DROP TABLE IF EXISTS " + this.query.escapeId(opts.table)); for (i = 0; i < opts.many_associations.length; i++) { queries.push("DROP TABLE IF EXISTS " + this.query.escapeId(opts.many_associations[i].mergeTable)); } pending = queries.length; for (i = 0; i < queries.length; i++) { this.execQuery(queries[i], function (err) { if (--pending === 0) { return cb(err); } }); } return this; };