Persistence-Entity
view release on metacpan or search on metacpan
lib/Persistence/Meta/Injection.pm view on Meta::CPAN
my $lob_map = $orm->covert_to_lob_attributes($lobs);
$orm->set_lobs($lob_map);
for my $relation (@$to_one_relationships) {
$self->_add_to_one_relationship($relation, $orm);
}
for my $relation (@$one_to_many_relationships) {
$self->_add_one_to_many_relationship($relation, $orm);
}
for my $relation (@$many_to_many_relationships) {
$self->_add_many_to_many_relationship($relation, $orm);
}
$orm;
}
=item _add_one_to_many_relationship
=cut
sub _add_one_to_many_relationship {
my ($self, $relationship, $orm) = @_;
Persistence::Relationship::OneToMany->add_relationship($self->_add_relationship_parameters($relationship, $orm));
}
=item _add_to_many_to_many_relationship
=cut
sub _add_many_to_many_relationship {
my ($self, $relationship, $orm) = @_;
Persistence::Relationship::ManyToMany->add_relationship($self->_add_relationship_parameters($relationship, $orm));
}
=item _add_to_one_relationship
=cut
sub _add_to_one_relationship {
my ($self, $relationship, $orm) = @_;
Persistence::Relationship::ToOne->add_relationship($self->_add_relationship_parameters($relationship, $orm));
}
=item _add_relationship_parameters
=cut
sub _add_relationship_parameters {
my ($self, $relationship, $orm) = @_;
my $attribute = $orm->attribute($relationship->{attribute});
my @result = ($orm->class, $relationship->{name}, attribute => $attribute);
if (my $fetch_method = $relationship->{fetch_method}) {
push @result, 'fetch_method' => Persistence::Relationship->$fetch_method();
}
if (my $cascade = $relationship->{cascade}) {
push @result, 'cascade' => Persistence::Relationship->$cascade();
}
if (my $join_entity = $relationship->{join_entity}) {
push @result, 'join_entity_name' => $join_entity;
}
@result;
}
=item _relationship
Returns the relationship object.
Takes hash_ref, that will be transformed to the new object parameters.
=cut
sub _relationship {
my ($self, $relationship) = @_;
my $target_entity = ref($relationship->{target_entity}) ? $relationship->{target_entity}->id : $relationship->{target_entity};
my $entity = $self->entity($target_entity)
or confess "unknow entity " . $target_entity;
$relationship->{target_entity} = $entity;
my $condition = $relationship->{condition};
$self->_parse_condition($condition) if $condition;
sql_relationship(%$relationship);
}
=item _parse_condition
Parses condition object to replacase ant occurence of <entity>.<column> to column object.
=cut
sub _parse_condition {
my ($self, $condition) = @_;
{
my $operand1 = $condition->operand1;
my ($entity, $column) = $self->has_column($operand1);
$condition->set_operand1($self->entity_column($entity, $column)) if($column)
}
{
my $operand2 = $condition->operand2;
my ($entity, $column) = $self->has_column($operand2);
$condition->set_operand2($self->entity_column($entity, $column)) if($column)
}
my $conditions = $condition->conditions;
for my $k (@$conditions) {
$self->_parse_condition($k);
}
}
=item has_column
=cut
( run in 0.789 second using v1.01-cache-2.11-cpan-39bf76dae61 )