DBIx-Class-Schema-Loader
view release on metacpan or search on metacpan
t/25backcompat.t view on Meta::CPAN
sub _rel_condition {
my ($from, $to) = @_;
return +{
QuuxBaz => q{'foreign.baz_num' => 'self.baz_id'},
BarFoo => q{'foreign.fooid' => 'self.foo_id'},
BazStationsvisited => q{'foreign.id' => 'self.stations_visited_id'},
StationsvisitedQuux => q{'foreign.quuxid' => 'self.quuxs_id'},
RoutechangeQuux => q{'foreign.quuxid' => 'self.QuuxsId'},
}->{_rel_key($from, $to)};
}
sub class_content_contains {
my ($schema, $class, $substr, $test_name) = @_;
my $file = $schema->loader->get_dump_filename($class);
my $code = slurp_file $file;
local $Test::Builder::Level = $Test::Builder::Level + 1;
contains $code, $substr, $test_name;
}
sub contains {
my ($haystack, $needle, $test_name) = @_;
local $Test::Builder::Level = $Test::Builder::Level + 1;
like $haystack, qr/\Q$needle\E/, $test_name;
}
sub add_custom_content {
my ($schema, $rels, $opts) = @_;
while (my ($from, $to) = each %$rels) {
my $relname = $opts->{rel_name_map}{_rel_key($from, $to)} || _relname($to);
my $from_class = _qualify_class($from, $opts->{result_namespace});
my $to_class = _qualify_class($to, $opts->{result_namespace});
my $condition = _rel_condition($from, $to);
my $content = <<"EOF";
package ${from_class};
sub b_method { 'dongs' }
__PACKAGE__->has_one('$relname', '$to_class',
{ $condition });
1;
EOF
_write_custom_content($schema, $from_class, $content);
}
}
sub _write_custom_content {
my ($schema, $class, $content) = @_;
my $pm = $schema->loader->get_dump_filename($class);
{
local ($^I, @ARGV) = ('.bak', $pm);
while (<>) {
if (/DO NOT MODIFY THIS OR ANYTHING ABOVE/) {
print;
print $content;
}
else {
print;
}
}
close ARGV;
unlink "${pm}.bak" or die $^E;
}
}
sub result_count {
my $path = shift || '';
my $dir = result_dir($path);
my $file_count =()= glob "$dir/*";
return $file_count;
}
sub result_files {
my $path = shift || '';
my $dir = result_dir($path);
return glob "$dir/*";
}
sub schema_files { result_files(@_) }
sub result_dir {
my $path = shift || '';
(my $dir = "$DUMP_DIR/$SCHEMA_CLASS/$path") =~ s{::}{/}g;
$dir =~ s{/+\z}{};
return $dir;
}
sub schema_dir { result_dir(@_) }
# vim:et sts=4 sw=4 tw=0:
( run in 0.875 second using v1.01-cache-2.11-cpan-a9496e3eb41 )