Neutral Political Machine

    sql-ddl-sync

    0.4.0 • Public • Published

    NodeJS SQL DDL Synchronization

    Build Status

    Install

    npm install sql-ddl-sync

    Dialects

    • MySQL
    • PostgreSQL
    • SQLite

    About

    This module is part of ORM. It's used synchronize model tables in supported dialects. Sorry there is no API documentation for now but there are a couple of tests you can read and find out how to use it if you want.

    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: "serial", key: true, serial: true },
        name   : { type: "text", required: true },
        age    : { type: "integer" },
        male   : { type: "boolean" },
        born   : { type: "date", time: true },
        born2  : { type: "date" },
        int2   : { type: "integer", size: 2 },
        int4   : { type: "integer", size: 4 },
        int8   : { type: "integer", size: 8 },
        float4 : { type: "number",  size: 4 },
        float8 : { type: "number",  size: 8 },
        photo  : { type: "binary" }
      });
    
    	sync.sync(function (err) {
    		if (err) {
    			console.log("> Sync Error");
    			console.log(err);
    		} else {
    			console.log("> Sync Done");
    		}
    		process.exit(0);
    	});
    });

    PostgreSQL UUID

    { type: 'uuid', defaultExpression: 'uuid_generate_v4()' }

    Test

    To test, first make sure you have development dependencies installed. Go to the root folder and do:

    npm install

    Then, just run the tests.

    npm test

    If you have a supported database server and want to test against it, first install the module:

    # if you have a mysql server
    npm install mysql
    # if you have a postgresql server
    npm install pg

    And then run:

    node test/run-db --uri 'mysql://username:password@localhost/database'

    Install

    npm i sql-ddl-sync

    DownloadsWeekly Downloads

    1,053

    Version

    0.4.0

    License

    MIT

    Unpacked Size

    75.3 kB

    Total Files

    20

    Last publish

    Collaborators

    • dxg
    • dresende