move all mysql- and Pg-specific code to DBD driver callbacks
[DBIx-DBSchema.git] / DBSchema / DBD / mysql.pm
index 924c309..a99dcf4 100644 (file)
@@ -4,12 +4,13 @@ use strict;
 use vars qw($VERSION @ISA %typemap);
 use DBIx::DBSchema::DBD;
 
-$VERSION = '0.05';
+$VERSION = '0.06';
 @ISA = qw(DBIx::DBSchema::DBD);
 
 %typemap = (
   'TIMESTAMP'      => 'DATETIME',
   'SERIAL'         => 'INTEGER',
+  'BIGSERIAL'      => 'BIGINT',
   'BOOL'           => 'TINYINT',
   'LONG VARBINARY' => 'LONGBLOB',
 );
@@ -109,6 +110,26 @@ sub _show_index {
   ( $pkey, \%unique, \%index );
 }
 
+sub column_callback {
+  my( $proto, $dbh, $table, $column_obj ) = @_;
+
+  my $hashref = { 'explicit_null' => 1, };
+
+  $hashref->{'effective_local'} = 'AUTO_INCREMENT'
+    if $column_obj->type =~ /^(\w*)SERIAL$/i;
+
+  if ( $column_obj->default =~ /^(NOW)\(\)$/i
+       && $column_obj->type =~ /^(TIMESTAMP|DATETIME)$/i ) {
+
+    $hashref->{'effective_default'} = 'CURRENT_TIMESTAMP';
+    $hashref->{'effective_type'} = 'TIMESTAMP';
+
+  }
+
+  $hashref;
+
+}
+
 =head1 AUTHOR
 
 Ivan Kohler <ivan-dbix-dbschema@420.am>
@@ -117,6 +138,7 @@ Ivan Kohler <ivan-dbix-dbschema@420.am>
 
 Copyright (c) 2000 Ivan Kohler
 Copyright (c) 2000 Mail Abuse Prevention System LLC
+Copyright (c) 2007 Freeside Internet Services, Inc.
 All rights reserved.
 This program is free software; you can redistribute it and/or modify it under
 the same terms as Perl itself.