# sql-ddl-sync

> NodeJS SQL DDL Synchronization

Latest version **0.4.0** (published 2022-03-17) · MIT license · 0 weekly downloads

## Install

```sh
npm install sql-ddl-sync
pnpm add sql-ddl-sync
yarn add sql-ddl-sync
bun add sql-ddl-sync
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.4.0 |
| Published | 2022-03-17 |
| First published | 2013-09-19 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Node | * |
| Dependencies | 1 |
| Unpacked size | 73.5 KB |
| Known vulnerabilities | 0 (+2 in 1 direct dependencies) |
| Install scripts | no |
| GitHub stars | 13 |
| Author | Diogo Resende |
| Maintainers | dxg, dresende |
| Keywords | sql, ddl, sync, mysql, postgres, sqlite |

## Links

- npm: https://www.npmjs.com/package/sql-ddl-sync
- Repository: https://github.com/dresende/node-sql-ddl-sync
- Homepage: https://github.com/dresende/node-sql-ddl-sync#readme
- Issues: https://github.com/dresende/node-sql-ddl-sync/issues
- npm.io page: https://npm.io/package/sql-ddl-sync

## Dependencies (1)

- [lodash](https://npm.io/package/lodash.md) ~4.17.21

## Alternatives

- [@commercetools/sync-actions](https://npm.io/package/@commercetools/sync-actions.md) — 25.1K weekly downloads
- [cwait](https://npm.io/package/cwait.md) — 21.4K weekly downloads
- [@ledgerhq/hw-app-cosmos](https://npm.io/package/@ledgerhq/hw-app-cosmos.md) — 4.2K weekly downloads
- [@financial-times/o-loading](https://npm.io/package/@financial-times/o-loading.md) — 2.8K weekly downloads
- [fa](https://npm.io/package/fa.md) — 185 weekly downloads

## Recent versions

- 0.4.0 (latest) — 2022-03-17
- 0.3.18 — 2022-01-11
- 0.3.17 — 2022-01-10
- 0.3.16 — 2019-11-04
- 0.3.15 — 2019-02-14
- 0.3.14 — 2018-06-21
- 0.3.13 — 2017-07-17
- 0.3.12 — 2016-12-08
- 0.3.11 — 2015-03-22
- 0.1.4 — 2013-12-05
- 0.1.3 — 2013-11-09
- 0.1.2 — 2013-09-20
- 0.1.1 — 2013-09-20
- 0.1.0 — 2013-09-19

## README

## NodeJS SQL DDL Synchronization

[![Build Status](https://secure.travis-ci.org/dresende/node-sql-ddl-sync.png?branch=master)](http://travis-ci.org/dresende/node-sql-ddl-sync)
[![](https://badge.fury.io/js/sql-ddl-sync.png)](https://npmjs.org/package/sql-ddl-sync)
[![](https://gemnasium.com/dresende/node-sql-ddl-sync.png)](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'
```

---
_Source: https://npm.io/package/sql-ddl-sync · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
