use Lingua::EN::Inflect::Number qw//;
use File::Temp qw//;
use Class::Unload;
+use Class::Inspector ();
require DBIx::Class;
-our $VERSION = '0.05000';
+our $VERSION = '0.05002';
__PACKAGE__->mk_group_ro_accessors('simple', qw/
schema
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:
+
+ sub _custom_column_info {
+ my $info = shift;
+
+ if ( $info->{TYPE_NAME} eq 'DATE' ){
+ return { timezone => "Europe/Berlin" };
+ }
+ return;
+ }
+
+Add to all columns with type DATE the attribute timezone => "Europe/Berlin".
+
=head1 METHODS
None of these methods are intended for direct invocation by regular
=cut
-use constant CURRENT_V => 'v5';
+use constant CURRENT_V => 'v5';
+
+use constant CLASS_ARGS => qw(
+ schema_base_class result_base_class additional_base_classes
+ left_base_classes additional_classes components resultset_components
+);
# ensure that a peice of object data is a valid arrayref, creating
# an empty one or encapsulating whatever's there.
resultset_components
/);
+ $self->_validate_class_args;
+
push(@{$self->{components}}, 'ResultSetManager')
if @{$self->{resultset_components}};
close $fh;
}
+sub _validate_class_args {
+ my $self = shift;
+ my $args = shift;
+
+ foreach my $k (CLASS_ARGS) {
+ next unless $self->$k;
+
+ my @classes = ref $self->$k eq 'ARRAY' ? @{ $self->$k } : $self->$k;
+ foreach my $c (@classes) {
+ # components default to being under the DBIx::Class namespace unless they
+ # are preceeded with a '+'
+ if ( $k =~ m/components$/ && $c !~ s/^\+// ) {
+ $c = 'DBIx::Class::' . $c;
+ }
+
+ # 1 == installed, 0 == not installed, undef == invalid classname
+ my $installed = Class::Inspector->installed($c);
+ if ( defined($installed) ) {
+ if ( $installed == 0 ) {
+ croak qq/$c, as specified in the loader option "$k", is not installed/;
+ }
+ } else {
+ croak qq/$c, as specified in the loader option "$k", is an invalid class name/;
+ }
+ }
+ }
+}
+
sub _find_file_in_inc {
my ($self, $file) = @_;
sub _custom_column_info {
my ( $self, $info ) = @_;
- if( ref $self->custom_column_info eq 'HASH' ) {
-
- } elsif( ref $self->custom_column_info eq 'CODE' ) {
+ if( ref $self->custom_column_info eq 'CODE' ) {
return $self->custom_column_info->($info);
}
+ return {};
}
# remove the dump dir from @INC on destruction