Skip to content

Synching and Dropping Models

Lawrence Selvy edited this page Feb 27, 2014 · 11 revisions

###Synching

Below is an example taken from (sql-ddl-sync)[https://github.com/lselvy/node-sql-ddl-sync?source=c].

Example

Install orm & the required driver (eg: mysql). Create a file with the contents below and change insert your database credentials. Run once and you'll see table ddl_sync_test appear in your database. Then make some changes to it (add/drop/change columns) and run the code again. Your table should always return to the same structure.

var orm    = require("orm");
var mysql  = require("mysql");
var Sync   = require("sql-ddl-sync").Sync;

orm.connect("mysql://username:password@localhost/database", function (err, db) {
	if (err) throw err;
	var driver = db.driver;

	var sync = new Sync({
		dialect : "mysql",
		driver  : driver,
		debug   : function (text) {
			console.log("> %s", text);
		}
	});

	sync.defineCollection("ddl_sync_test", {
		id     : { type : "number", primary: true, serial: true },
		name   : { type : "text", required: true },
		age    : { type : "number", rational: true },
		male   : { type : "boolean" },
		born   : { type : "date", time: true },
		born2  : { type : "date" },
		int2   : { type : "number", size: 2 },
		int4   : { type : "number", size: 4 },
		int8   : { type : "number", size: 8 },
		float4 : { type : "number", rational: true, size: 4 },
		float8 : { type : "number", rational: true, size: 8 },
		type   : { type : "enum", values: [ 'dog', 'cat'], defaultValue: 'dog', required: true },
		photo  : { type : "binary" }
	});

	sync.sync(function (err) {
		if (err) {
			console.log("> Sync Error");
			console.log(err);
		} else {
			console.log("> Sync Done");
		}
		process.exit(0);
	});
});

Clone this wiki locally