Scheman

Manage database schema based on schema definition file.

Usage

Creates Diff with 2 schema files and logs out their diff.

before = <<-SQL
CREATE TABLE `table1` (
  `column1` INTEGER NOT NULL AUTO INCREMENT,
  PRIMARY KEY (`column1`)
);

CREATE TABLE `table2` (
  `column1` INTEGER NOT NULL AUTO INCREMENT,
  PRIMARY KEY (`column1`)
);
SQL

after = <<-SQL
CREATE TABLE `table1` (
  `column2` VARCHAR(255) NOT NULL,
  PRIMARY KEY (`column1`)
);

CREATE TABLE `table3` (
  `column1` INTEGER NOT NULL AUTO INCREMENT,
  PRIMARY KEY (`column1`)
);
SQL

puts Scheman::Diff.new(before: before, after: after, type: "mysql")

The result would be the following:

BEGIN;

SET foreign_key_checks=0;

CREATE TABLE `table3` (
  `column1` INTEGER NOT NULL AUTO INCREMENT,
  PRIMARY KEY (`column1`)
);

ALTER TABLE `table1` ADD COLUMN `column2` VARCHAR(255) NOT NULL;

ALTER TABLE `table1` DROP COLUMN `column1`;

DROP TABLE `table2`;

SET foreign_key_checks=1;

COMMIT;