X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FSQL%2FTranslator%2FParser%2FDBIx%2FClass.pm;h=835edbbdcb2f094b7694062515990a2f7d9f33f7;hb=ed899df367fc90a6b30f1e17d0ea4e2bc2e094f6;hp=2b408e22c8d5bbc4b4c13155acedcc1908831d6a;hpb=0a0585ddc73e571741e98d51446d83083ed1e4f1;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/SQL/Translator/Parser/DBIx/Class.pm b/lib/SQL/Translator/Parser/DBIx/Class.pm index 2b408e2..835edbb 100644 --- a/lib/SQL/Translator/Parser/DBIx/Class.pm +++ b/lib/SQL/Translator/Parser/DBIx/Class.pm @@ -66,7 +66,18 @@ sub parse { } - foreach my $moniker (sort @monikers) + my(@table_monikers, @view_monikers); + for my $moniker (@monikers){ + my $source = $dbicschema->source($moniker); + next if $source->is_virtual; + if ( $source->isa('DBIx::Class::ResultSource::Table') ) { + push(@table_monikers, $moniker); + } elsif( $source->isa('DBIx::Class::ResultSource::View') ){ + push(@view_monikers, $moniker); + } + } + + foreach my $moniker (sort @table_monikers) { my $source = $dbicschema->source($moniker); @@ -218,6 +229,25 @@ sub parse { $source->_invoke_sqlt_deploy_hook($table); } + foreach my $moniker (sort @view_monikers) + { + my $source = $dbicschema->source($moniker); + # Skip custom query sources + next if ref($source->name); + + # Its possible to have multiple DBIC source using same table + next if $seen_tables{$source->name}++; + + my $view = $schema->add_view( + name => $source->name, + fields => [ $source->columns ], + $source->view_definition ? ( 'sql' => $source->view_definition ) : () + ); + if ($source->result_class->can('sqlt_deploy_hook')) { + $source->result_class->sqlt_deploy_hook($view); + } + } + if ($dbicschema->can('sqlt_deploy_hook')) { $dbicschema->sqlt_deploy_hook($schema); }