X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FSchema%2FLoader%2FBase.pm;h=16ce37339330995800763d8794f1b5adad6693cf;hb=a13b280367c1e372e5dbc00862c92751082a9fc2;hp=1bed409a27be000901ca6228eec017b4df420d63;hpb=fc2b71fda3e7cebcb8df6430eb866754bf009350;p=dbsrgits%2FDBIx-Class-Schema-Loader.git diff --git a/lib/DBIx/Class/Schema/Loader/Base.pm b/lib/DBIx/Class/Schema/Loader/Base.pm index 1bed409..16ce373 100644 --- a/lib/DBIx/Class/Schema/Loader/Base.pm +++ b/lib/DBIx/Class/Schema/Loader/Base.pm @@ -258,6 +258,7 @@ sub _load_external { if($self->dump_directory) { my $class_path = $table_class; $class_path =~ s{::}{/}g; + $class_path .= '.pm'; my $filename = $INC{$class_path}; croak 'Failed to locate actual external module file for ' . "'$table_class'" @@ -401,12 +402,11 @@ sub _inject { sub _load_classes { my $self = shift; - my $schema = $self->schema; - my $schema_class = $self->schema_class; - - my $constraint = $self->constraint; - my $exclude = $self->exclude; - my @tables = sort $self->_tables_list; + my $schema = $self->schema; + my $schema_class = $self->schema_class; + my $constraint = $self->constraint; + my $exclude = $self->exclude; + my @tables = sort $self->_tables_list; warn "No tables found in database, nothing to load" if !@tables; @@ -434,9 +434,8 @@ sub _load_classes { local *Class::C3::reinitialize = sub { }; use warnings; - { no strict 'refs'; - @{"${table_class}::ISA"} = qw/DBIx::Class/; - } + { no strict 'refs'; @{"${table_class}::ISA"} = qw/DBIx::Class/ } + $self->_use ($table_class, @{$self->additional_classes}); $self->_inject($table_class, @{$self->additional_base_classes}); @@ -456,7 +455,18 @@ sub _load_classes { $self->_dbic_stmt($table_class,'table',$table); my $cols = $self->_table_columns($table); - $self->_dbic_stmt($table_class,'add_columns',@$cols); + my $col_info; + eval { $col_info = $schema->storage->columns_info_for($table) }; + if($@) { + $self->_dbic_stmt($table_class,'add_columns',@$cols); + } + else { + my %cols_hash; + foreach my $col (@$cols) { + $cols_hash{$col} = \%{($col_info->{$col})}; + } + $self->_dbic_stmt($table_class,'add_columns',%cols_hash); + } my $pks = $self->_table_pk_info($table) || []; @$pks ? $self->_dbic_stmt($table_class,'set_primary_key',@$pks)