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 => (
( $_[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 {
( 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 }