Boris Sukholitko
and 1 contributors


Class::DBI::Pg::More - Enhances Class::DBI::Pg with more goodies.


   package MyClass;
   use base 'Class::DBI::Pg::More';

   # a_date is a date column in my_table. 
   # Class::DBI::Plugin::DateFormat::Pg->has_date has been
   # called for a_date implicitly.
   my $a_date_info =  __PACKAGE__->pg_column_info('a_date')
   print $a_date_info->{type}; # prints "date"

   # an_important is an important column in my_table set to not null
   print $a_date_info->{is_nullable} ? "TRUE" : "FALSE"; # prints FALSE


This class overrides Class::DBI::Pg set_up_table method to setup more things from the database.

It recognizes date, timestamp etc. columns and calls Class::DBI::Plugin::DateTime::Pg has_* methods on them.

It also fetches some constraint information (currently not null).


$class->set_up_table($table, $args)

This is main entry point to the module. Please see Class::DBI::Pg documentation for its description.

This class automagically uses Class::DBI::Plugin::DateTime::Pg for date/time fields, so you should use DateTime values with them.

$class->set_exec_sql($name, $sql, @arg_map)

Wraps Ima::DBI set_sql methods to create exec_$name function which basically calls execute on sql_$name handle.

@arg_map provides mapping of the arguments to the exec function. It can be used to call instance methods to get execution parameters.

For example given "update __TABLE__ set col = ? where id = ?" statement argument map (undef, "id") tells to substitute last parameter by results of the $self->id function.

$class->set_exec_sql($name, $sql, $slice, @arg_map)

Wraps Ima::DBI set_sql methods to create fetch_$name function which basically calls execute and fetchall_arrayref on sql_$name handle.

For description of $slice parameter see DBI fetchall_arrayref function.

@arg_map is described above.


Returns column information as HASHREF. Currently supported flags are:

type - Returns data type of the column (e.g. integer, text, date etc.).
is_nullable - Indicates whether the $column can be null.


        Boris Sukholitko
        CPAN ID: BOSU


This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

The full text of the license can be found in the LICENSE file included with this module.


Class::DBI::Pg, Class::DBI::Plugin::DateTime::Pg.