https://github.com/dresende/node-sql-ddl-sync
NodeJS SQL DDL Synchronization
https://github.com/dresende/node-sql-ddl-sync
Last synced: 10 months ago
JSON representation
NodeJS SQL DDL Synchronization
- Host: GitHub
- URL: https://github.com/dresende/node-sql-ddl-sync
- Owner: dresende
- License: mit
- Created: 2013-09-19T10:36:16.000Z (over 12 years ago)
- Default Branch: master
- Last Pushed: 2022-03-17T10:39:54.000Z (almost 4 years ago)
- Last Synced: 2025-03-13T08:37:07.644Z (10 months ago)
- Language: JavaScript
- Size: 160 KB
- Stars: 13
- Watchers: 6
- Forks: 16
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- Changelog: Changelog.md
- License: LICENSE
Awesome Lists containing this project
README
## NodeJS SQL DDL Synchronization
[](http://travis-ci.org/dresende/node-sql-ddl-sync)
[](https://npmjs.org/package/sql-ddl-sync)
[](https://gemnasium.com/dresende/node-sql-ddl-sync)
## Install
```sh
npm install sql-ddl-sync
```
## Dialects
- MySQL
- PostgreSQL
- SQLite
## About
This module is part of [ORM](http://dresende.github.com/node-orm2). 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.
```js
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
```js
{ type: 'uuid', defaultExpression: 'uuid_generate_v4()' }
```
## Test
To test, first make sure you have development dependencies installed. Go to the root folder and do:
```sh
npm install
```
Then, just run the tests.
```sh
npm test
```
If you have a supported database server and want to test against it, first install the module:
```sh
# if you have a mysql server
npm install mysql
# if you have a postgresql server
npm install pg
```
And then run:
```sh
node test/run-db --uri 'mysql://username:password@localhost/database'
```