#!/usr/bin/perl -w

use strict;
use LWP::Simple;

my $dump1=get("http://www.domain.org/sqldump.php");
my $dump2=`mysqldump database -u user --password=pass --no-data`;

sub analyze($)
{
  my %data=();
  while($_[0]=~s/CREATE TABLE `(\w+)` \((.*?)\) ENGINE=\w+.*?DEFAULT CHARSET=\w+;//s)
  {
    my $table=$1;
    $data{$table}->{".def"}=$2;
    #print "Table: $1\n";
    foreach(split("\n",$2))
    {
      if(m/^\s*`(\w+)` (.*),/)
      {
        $data{$table}->{$1}=$2;
        #print "Spalte $1 = -$2-\n";
     }
    }
  }
  return %data;
}


my %columns1=analyze($dump1);
#print "\n\n\n";
my %columns2=analyze($dump2);

foreach my $table (keys %columns1)
{
  if(!defined($columns2{$table}))
  {
    print "CREATE TABLE $table ($columns1{$table}->{'.def'});\n";
  }
  else
  {
    foreach (keys %{$columns1{$table}})
    {
      if(!defined($columns2{$table}->{$_}))
      { 
        print "ALTER TABLE $table ADD COLUMN $_ $columns1{$table}->{$_};\n";
      }
    }
    foreach (keys %{$columns2{$table}})
    {
      if(!defined($columns1{$table}->{$_}))
      { 
        print "ALTER TABLE $table DROP COLUMN $_;\n";
      }
    }
  }
}
foreach (keys %columns2)
{
  if(!defined($columns1{$_}))
  {
    print "DROP TABLE $_;\n";
  }
}



