/usr/share/perl5/Class/DBI/Cascade/None.pm is in libclass-dbi-perl 3.0.17-4.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | package Class::DBI::Cascade::None;
=head1 NAME
Class::DBI::Cascade::None - Do nothing upon deletion
=head1 DESCRIPTION
This is a Cascading Delete strategy that will do nothing, leaving
orphaned records behind.
It is the base class for most ofther Cascade strategies, and so provides
several important methods:
=head1 CONSTRUCTOR
=head2 new
my $strategy = Cascade::Class->new($Relationship);
This must be instantiated with a Class::DBI::Relationship object.
=head1 METHODS
=head2 foreign_for
my $iterator = $strategy->foreign_for($obj);
This will return all the objects which are foreign to $obj across the
relationship. It's a normal Class::DBI search you can get the results
either as a list or as an iterator.
=head2 cascade
$strategy->cascade($obj);
Cascade across the related objects to $obj.
=head1 WRITING NEW STRATEGIES
Creating a Cascade strategy should be fairly simple. You usually just
need to inherit from here, and then supply a cascade() method that does
the required thing with the results from foreign_for().
So, for example, Cascade::Delete is implemented simply as:
package Class::DBI::Cascade::Delete;
use base 'Class::DBI::Cascade::None';
sub cascade {
my ($self, $obj) = @_;
$self->foreign_for($obj)->delete_all;
}
=cut
use strict;
use warnings;
sub new {
my ($class, $rel) = @_;
bless { _rel => $rel } => $class;
}
sub foreign_for {
my ($self, $obj) = @_;
return $self->{_rel}
->foreign_class->search($self->{_rel}->args->{foreign_key} => $obj->id);
}
sub cascade { return; }
1;
|