Skip to content

Instantly share code, notes, and snippets.

@jjn1056
Created January 28, 2020 01:46
Show Gist options
  • Save jjn1056/5a4c50d5279ca59e90d070fc12980974 to your computer and use it in GitHub Desktop.
Save jjn1056/5a4c50d5279ca59e90d070fc12980974 to your computer and use it in GitHub Desktop.
my $schema = shift; # ISA DBIx::Class::Schema
use SQL::Translator;
use SQL::Translator::Diff;
my $target_schema = SQL::Translator->new(
parser => 'SQL::Translator::Parser::DBIx::Class',
parser_args => {
dbic_schema => $schema,
},
)->translate;
my $source_schema = SQL::Translator->new(
parser => 'DBI',
parser_args => { dsn => $ENV{DBI_DSN} }
)->translate;
my $diff = SQL::Translator::Diff->new({
output_db => 'PostgreSQL',
source_schema => $source_schema,
target_schema => $target_schema,
})->compute_differences->produce_diff_sql;
@jjn1056
Copy link
Author

jjn1056 commented Jan 28, 2020

When I run this I get output like

-- Convert schema '' to 'Liminal::Schema v1':;

BEGIN;

DROP INDEX person_pkey;

ALTER TABLE person ALTER COLUMN id TYPE serial;

ALTER TABLE person ALTER COLUMN username TYPE character varying(48);

ALTER TABLE person ALTER COLUMN email TYPE character varying(48);

ALTER TABLE person ALTER COLUMN password TYPE character varying(64);

ALTER TABLE person ADD PRIMARY KEY (id);

DROP TABLE marks CASCADE;

DROP TABLE students CASCADE;

DROP TABLE courses CASCADE;

DROP TABLE tests CASCADE;

DROP TABLE dbix_class_deploymenthandler_versions CASCADE;


COMMIT;

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment