168
|
1 package Test::SQL::Diff;
|
|
2 use strict;
|
|
3 use warnings;
|
|
4 use parent qw(IMPL::Test::Unit);
|
|
5
|
|
6 use IMPL::Test qw(test failed assert);
|
|
7 use IMPL::SQL::Schema();
|
|
8 use IMPL::SQL::Types qw(Integer Varchar Text);
|
|
9 use IMPL::SQL::Schema::Traits::Diff();
|
|
10 use Data::Dumper;
|
|
11
|
|
12 __PACKAGE__->PassThroughArgs;
|
|
13
|
|
14 test diff => sub {
|
|
15 my $schemaSrc = new IMPL::SQL::Schema(name => 'simple', version => 1 );
|
|
16
|
169
|
17 my $tbl = $schemaSrc->AddTable({
|
168
|
18 name => 'User',
|
|
19 columns => [
|
169
|
20 { name => 'name', type => Varchar(255) },
|
|
21 { name => 'description', type => Varchar(255) }
|
168
|
22 ]
|
|
23 });
|
|
24
|
169
|
25 $tbl->AddConstraint( unique => { name => 'unique_name', columns => ['name'] });
|
|
26
|
168
|
27 my $schemaDst = new IMPL::SQL::Schema(name => 'simple', version => 2 );
|
|
28
|
|
29 my $users = $schemaDst->AddTable({
|
|
30 name => 'User',
|
|
31 columns => [
|
|
32 { name => 'id', type => Integer },
|
|
33 { name => 'login', type => Varchar(255) },
|
|
34 { name => 'description', type => Text, isNullable => 1 }
|
|
35 ]
|
|
36 });
|
|
37
|
|
38 $users->SetPrimaryKey('id');
|
169
|
39 $users->AddConstraint( unique => { name => 'unique_login', columns => ['login'] } );
|
168
|
40
|
181
|
41 #warn Dumper(IMPL::SQL::Schema::Traits::Diff->Diff($schemaSrc,$schemaDst));
|
168
|
42
|
|
43 $schemaSrc->Dispose;
|
|
44 $schemaDst->Dispose;
|
|
45
|
|
46 };
|
|
47
|
|
48
|
180
|
49 1;
|