diff Lib/IMPL/SQL/Schema/Traits/Diff.pm @ 165:76515373dac0

Added Class::Template, Rewritten SQL::Schema 'use parent' directive instead of 'use base'
author wizard
date Sat, 23 Apr 2011 23:06:48 +0400
parents
children 1f7a6d762394
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Lib/IMPL/SQL/Schema/Traits/Diff.pm	Sat Apr 23 23:06:48 2011 +0400
@@ -0,0 +1,35 @@
+package IMPL::SQL::Schema::Traits::Diff;
+use strict;
+use warnings;
+use IMPL::lang;
+
+use IMPL::SQL::Schema();
+use IMPL::SQL::Schema::Traits();
+
+use constant {
+	schema_t => typeof IMPL::SQL::Schema # defining a constant is a good style to enable compile checks
+};
+
+sub Diff {
+	my ($self,$src,$dst) = @_;
+	
+	die new IMPL::InvalidArgumentException( src => "A valid source schema is required") unless is($src,schema_t);
+	die new IMPL::InvalidArgumentException( dst => "A valid desctination schema is requried" ) unless is($src,schema_t);
+	
+	my %dstTables = map { $_->name, $_ } $dst->GetTables;
+	
+	my @operations;
+	
+	foreach my $srcTable ( $src->GetTables) {
+		my $dstTable = delete $dstTables{$srcTable->name};
+		
+		if (not $dstTable) {
+			push @operations, new IMPL::SQL::Schema::Traits::DropTable()
+		} else {
+			
+		}
+	
+	}  
+}
+
+1;
\ No newline at end of file