add constraints after all tables are added
[dbsrgits/SQL-Translator-2.0-ish.git] / lib / SQL / Translator / Parser / DBI / PostgreSQL.pm
index 28d1ac2..0d79c87 100644 (file)
@@ -1,8 +1,27 @@
-package SQL::Translator::Parser::DBI::PostgreSQL;
-use Moose;
-use SQL::Translator::Types qw(Schema);
-with 'SQL::Translator::Parser::DBI::Dialect';
+use MooseX::Declare;
+role SQL::Translator::Parser::DBI::PostgreSQL {
+    use MooseX::Types::Moose qw(HashRef Str);
+    use SQL::Translator::Types qw(View);
+    
+    has '+schema_name' => (
+      isa => Str,
+      lazy => 1,
+      default => 'public'
+    );
+    
+    method _get_view_sql(View $view) {
+        my ($sql) = $self->dbh->selectrow_array("SELECT pg_get_viewdef('$view'::regclass)");
+        return $sql;
+    }
+    
+    method _is_auto_increment(HashRef $column_info) {
+        return $column_info->{COLUMN_DEF} && $column_info->{COLUMN_DEF} =~ /^nextval\(/ ? 1 : 0;
+    }
+    
+    method _column_default_value(HashRef $column_info) {
+        my $default_value = $column_info->{COLUMN_DEF};
+        $default_value =~ s/::.*$// if defined $default_value;
 
-has 'schema' => (is => 'ro', isa => Schema, default => sub { SQL::Translator::Object::Schema->new({ name => 'public' }); } );
-
-1;
+        return $default_value;
+    }
+}