lazify things
[dbsrgits/SQL-Translator.git] / lib / SQL / Translator / Generator / Role / DDL.pm
index 8339a20..766ff8f 100644 (file)
@@ -3,31 +3,22 @@ package SQL::Translator::Generator::Role::DDL;
 use Moo::Role;
 use SQL::Translator::Utils qw(header_comment);
 
-requires '_build_shim';
 requires '_build_type_map';
 requires '_build_numeric_types';
 requires '_build_unquoted_defaults';
 requires 'field_type_size';
-
-has shim => (
-   is => 'ro',
-   handles => [ 'quote' ],
-   builder => '_build_shim',
-);
+requires 'quote';
 
 has type_map => (
-   is => 'ro',
-   builder => '_build_type_map',
+   is => 'lazy',
 );
 
 has numeric_types => (
-   is => 'ro',
-   builder => '_build_numeric_types',
+   is => 'lazy',
 );
 
 has unquoted_defaults => (
-   is => 'ro',
-   builder => '_build_unquoted_defaults',
+   is => 'lazy',
 );
 
 has add_comments => (
@@ -46,6 +37,21 @@ sub field_comments {
    ( $_[1]->comments ? ('-- ' . $_[1]->comments . "\n ") : () )
 }
 
+sub table_comments {
+   my ($self, $table) = @_;
+   if ($self->add_comments) {
+      return (
+         "",
+         "--",
+         "-- Table: " . $self->quote($table->name) . "",
+         "--",
+         map "-- $_", $table->comments
+      )
+   } else {
+      return ()
+   }
+}
+
 sub field_nullable { ($_[1]->is_nullable ? $_[0]->nullable : 'NOT NULL' ) }
 
 sub field_default {
@@ -68,6 +74,11 @@ sub fields {
   ( map $self->field($_), $table->get_fields )
 }
 
+sub indices {
+  my ($self, $table) = @_;
+  (map $self->index($_), $table->get_indices)
+}
+
 sub nullable { 'NULL' }
 
 sub header_comments { header_comment() . "\n" if $_[0]->add_comments }