use Class::Inspector ();
require DBIx::Class;
-our $VERSION = '0.05001';
+our $VERSION = '0.05002';
__PACKAGE__->mk_group_ro_accessors('simple', qw/
schema
skip_relationships
skip_load_external
moniker_map
+ custom_column_info
inflect_singular
inflect_plural
debug
monikers
dynamic
naming
+ datetime_timezone
+ datetime_locale
/);
Again, you should be using version control on your schema classes. Be
careful with this option.
+=head2 custom_column_info
+
+Must be a coderef, returing a hashref with the custom column informations.
+
+Example:
+
+ custom_column_info => sub {
+ my $info = shift;
+ # Example from $info hashref:
+ # $info = {
+ # 'DECIMAL_DIGITS' => undef,
+ # 'COLUMN_DEF' => undef,
+ # 'TABLE_CAT' => undef,
+ # 'NUM_PREC_RADIX' => undef,
+ # 'TABLE_SCHEM' => 'TESTS',
+ # 'BUFFER_LENGTH' => '8',
+ # 'CHAR_OCTET_LENGTH' => undef,
+ # 'IS_NULLABLE' => 'NO',
+ # 'REMARKS' => undef,
+ # 'COLUMN_SIZE' => '8',
+ # 'ORDINAL_POSITION' => '1',
+ # 'COLUMN_NAME' => 'LOADER_TEST9',
+ # 'TYPE_NAME' => 'VARCHAR2',
+ # 'NULLABLE' => '0',
+ # 'DATA_TYPE' => '12',
+ # 'TABLE_NAME' => 'LOADER_TEST9',
+ # 'SQL_DATA_TYPE' => '12',
+ # 'SQL_DATETIME_SUB' => undef
+ # };
+
+ if ( $info->{TYPE_NAME} eq 'DATE' ){
+ return { timezone => "Europe/Berlin" };
+ }
+ return;
+ }
+
+Add to all columns with type DATE the attribute timezone => "Europe/Berlin".
+
+=head2 datetime_timezone
+
+Set timezone attribute for L<DBIx::Class::InflateColumn::DateTime>
+to all columns with the type DATE.
+
+=head2 datetime_locale
+
+Set local attribute for L<DBIx::Class::InflateColumn::DateTime>
+to all columns with the type DATE.
+
=head1 METHODS
None of these methods are intended for direct invocation by regular
sub _is_case_sensitive { 0 }
+sub _custom_column_info {
+ my ( $self, $info ) = @_;
+
+ if( ref $self->custom_column_info eq 'CODE' ) {
+ return $self->custom_column_info->($info);
+ }
+ return {};
+}
+
+sub _datetime_column_info {
+ my ( $self, $info, $column_info) = @_;
+ # warn "_datetime_column_info XXXXXXXXX";
+ # use Data::Dumper;
+ # warn Dumper $info;
+ # warn Dumper $column_info;
+ my $return = {};
+ my $type = lc ( $info->{TYPE_NAME} );
+
+ if (
+ ( defined $column_info->{inflate_datetime} and $column_info->{inflate_datetime} )
+ or ( defined $column_info->{inflate_date} and $column_info->{inflate_date} )
+ or ( $type eq 'date')
+ or ( $type eq 'datetime')
+ or ( $type eq 'timestamp')
+ ){
+ $return->{timezone} = $self->datetime_timezone if $self->datetime_timezone;
+ $return->{locale} = $self->datetime_locale if $self->datetime_locale;
+ }
+ return $return;
+}
+
# remove the dump dir from @INC on destruction
sub DESTROY {
my $self = shift;