Oryx
view release on metacpan or search on metacpan
lib/Oryx.pm view on Meta::CPAN
stored (as a row) in the superclass' table, and are therefore fully
fledged instances of the superclass.
You can access these superclass instances with the I<PARENT> method as
follows:
my $parent_section_instance = $paragraph->PARENT('CMS::Section');
and then use this instance normally.
Updates and deletes cascade up the inheritance chain, as you'd expect.
=head1 ABSTRACT CLASSES
Abstract classes to Oryx are simply classes which do not define any
attributes, but may have associations. The effect is automatic.
Abstract classes behave slightly differently to concrete classes
(which define attributes) in that if you I<retrieve> an instance of an
abstract class (by id or by accessing a member of an association), you
get an instance of the sub class (the one which created the row in the
lib/Oryx/Association.pm view on Meta::CPAN
in the target class for storing a reverse association.
=cut
sub is_weak { $_[0]->getMetaAttribute('is_weak') }
=item constraint
Simple accessor to the C<constraint> meta-attribute. Values are:
Aggregate or Composition ... Aggregate is the default,
Composition causes deletes to cascade.
=cut
sub constraint {
my $self = shift;
unless (defined $self->{constraint}) {
$self->{constraint} = $self->getMetaAttribute("constraint")
|| 'Aggregate';
}
$self->{constraint};
lib/Oryx/Class.pm view on Meta::CPAN
stored (as a row) in the superclass' table, and are therefore fully
fledged instances of the superclass.
You can access these superclass instances with the I<PARENT> method as
follows:
my $parent_section_instance = $paragraph->PARENT('CMS::Section');
and then use this instance normally.
Updates and deletes cascade up the inheritance chain, as you'd expect.
=head1 ABSTRACT CLASSES
Abstract classes to Oryx are simply classes which do not define any
attributes, but may have associations. The effect is automatic.
Abstract classes behave slightly differently to concrete classes
(which define attributes) in that if you I<retrieve> an instance of an
abstract class (by id or by accessing a member of an association), you
get an instance of the sub class (the one which created the row in the
lib/Oryx/DBI/Association/Array.pm view on Meta::CPAN
$obj->dbh->commit;
}
sub delete {
my $self = shift;
my ($query, $obj) = @_;
my $accessor = $self->role;
my $value = $obj->$accessor;
if ($self->constraint eq 'Composition') {
# cascade the delete
while (my $thing = pop @$value) {
$thing->delete;
}
} elsif ($self->constraint eq 'Aggregation') {
# just clear the Array
@$value = ();
}
$self->update(@_);
}
lib/Oryx/DBI/Association/Hash.pm view on Meta::CPAN
$obj->dbh->commit;
}
sub delete {
my $self = shift;
my ($query, $obj) = @_;
my $accessor = $self->role;
my $value = $obj->$accessor;
if ($self->constraint eq 'Composition') {
# composition, so cascade the delete
foreach my $thing (values %$value) {
$thing->delete;
}
} elsif ($self->constraint eq 'Aggregation') {
# aggregation so just clear the Hash
%$value = ();
}
$self->update(@_);
}
lib/Oryx/DBM/Association/Array.pm view on Meta::CPAN
$self->update_backrefs($obj, @$value);
}
sub delete {
my $self = shift;
my ($proto, $obj) = @_;
my $accessor = $self->role;
my $value = $obj->$accessor;
if ($self->constraint eq 'Composition') {
# cascade the delete
while (my $thing = pop @$value) {
$thing->delete;
}
} elsif ($self->constraint eq 'Aggregation') {
# just clear the Array
@$value = ();
}
$self->update(@_);
}
lib/Oryx/DBM/Association/Hash.pm view on Meta::CPAN
$obj->dbh->commit;
}
sub delete {
my $self = shift;
my ($query, $obj) = @_;
my $accessor = $self->role;
my $value = $obj->$accessor;
if ($self->constraint eq 'Composition') {
# composition, so cascade the delete
foreach my $thing (values %$value) {
$thing->delete;
}
} elsif ($self->constraint eq 'Aggregation') {
# aggregation so just clear the Hash
%$value = ();
}
$self->update(@_);
}
lib/Oryx/DBM/Association/Reference.pm view on Meta::CPAN
} else {
$proto->{ $f_key } = $obj->$accessor;
}
}
}
sub delete {
my $self = shift;
my ($proto, $obj) = @_;
if ($self->constraint eq 'Composition') {
# cascade the delete
my $accessor = $self->role;
$obj->$accessor->dbm->delete($obj->id);
}
$self->update(@_);
}
sub search {
}
( run in 0.660 second using v1.01-cache-2.11-cpan-49f99fa48dc )