SQL-Admin

 view release on metacpan or  search on metacpan

lib/SQL/Admin/Driver/Pg/Producer.pm  view on Meta::CPAN


package SQL::Admin::Driver::Pg::Producer;
use base qw( SQL::Admin::Driver::Base::Producer );

use strict;
use warnings;

our $VERSION = v0.5.0;

######################################################################

use SQL::Admin::Driver::Pg::Keywords qw( :all );

our %DATA_TYPE_MAP = (
);

######################################################################

our $ESCAPE_ALL_IDENTIFIERS      = 0;
our $ESCAPE_NONRESERVED_KEYWORDS = 0;
our $ESCAPE_SQL_KEYWORDS         = 0;

######################################################################

our %REFERENTIAL_ACTION = (
    cascade   => [ 'CASCADE' ],
    no_action => [ 'NO', 'ACTION' ],
    restrict  => [ 'RESTRICT' ],
    set_null  => [ 'SET', 'NULL' ],
);

######################################################################
######################################################################

sub _escape_identifier {                 # ;
    my ($self, $identifier) = @_;
    my $lc = lc $identifier;

    $identifier = '"' . $identifier . '"'
      if $ESCAPE_ALL_IDENTIFIERS
        || $RESERVED_KEYWORDS{ $lc }
        || ($ESCAPE_NONRESERVED_KEYWORDS && $NONRESERVED_KEYWORDS{ $lc })
        || ($ESCAPE_SQL_KEYWORDS         && $SQL_KEYWORDS{ $lc })
      ;

    ##################################################################

    $identifier;
}


######################################################################
######################################################################
sub data_type {                          # ;
    my ($self, $data, $parent) = @_;

    return 'serial' if $parent->{autoincrement};

    $data = $DATA_TYPE_MAP{lc $data}
      if exists $DATA_TYPE_MAP{lc $data};

    $self->SUPER::data_type ($data, $parent);
}


######################################################################
######################################################################
sub current_timestamp {                  # ;
    'CURRENT_TIMESTAMP';
}


######################################################################
######################################################################
sub current_time {                       # ;
    'CURRENT_TIME';
}


######################################################################
######################################################################
sub current_date {                       # ;
    'CURRENT_DATE';
}




( run in 1.396 second using v1.01-cache-2.11-cpan-39bf76dae61 )