X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FSQL%2FTranslator%2FParser%2FDBIx%2FClass.pm;h=3e915bccfff38efe4a9cd6075f91df700fb9ff3d;hb=ef2233538f2581237df7ba110a6f755ab3c34b4f;hp=d4499aa7ac136fd5e6468ad97035e993f1ca4330;hpb=555b3385868f4954e1faf0a01d4d691a07905250;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/SQL/Translator/Parser/DBIx/Class.pm b/lib/SQL/Translator/Parser/DBIx/Class.pm index d4499aa..3e915bc 100644 --- a/lib/SQL/Translator/Parser/DBIx/Class.pm +++ b/lib/SQL/Translator/Parser/DBIx/Class.pm @@ -65,8 +65,18 @@ sub parse { @monikers = grep { $sources->{$_} } @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 @monikers) + foreach my $moniker (sort @table_monikers) { my $source = $dbicschema->source($moniker); @@ -219,6 +229,26 @@ sub parse { } } + 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 ? $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); }