DBIx-Class-Visualizer
view release on metacpan or search on metacpan
lib/DBIx/Class/Visualizer.pm view on Meta::CPAN
"is_foreign_key": 0,
"is_numeric": 1,
"extra": {},
"relations":[
{
"origin_table": "TableName",
"origin_column": "a_column_id",
"destination_table": "AnotherTableName"
"destination_column": "a_column_id",
"relation_type": "has_many",
"cascade_delete": 1,
},
...
],
}">a_column_id</text>
The C<data-column-info> attribute is a json object that is directly usable by something like jQuery:
# has_many
$('#column-TableName-a_column_id').data('column-info').relations[0].relation_type;
lib/DBIx/Class/Visualizer/Relation.pm view on Meta::CPAN
has destination_table => (
is => 'ro',
isa => Str,
required => 1,
);
has destination_column => (
is => 'ro',
isa => Str,
required => 1,
);
has cascade_delete => (
is => 'ro',
isa => Bool,
predicate => 1,
);
has cascade_update => (
is => 'ro',
isa => Bool,
predicate => 1,
);
has relation_type => (
is => 'ro',
isa => Enum[qw/has_many has_one belongs_to might_have/],
required => 1,
);
lib/DBIx/Class/Visualizer/Relation.pm view on Meta::CPAN
my $class = shift;
my %args = @_;
my $relation = delete $args{'relation'};
my $attr = $relation->{'attrs'};
($args{'destination_table'} = $relation->{'source'}) =~ s{^.*?::Result::}{};
($args{'origin_column'} = (values %{ $relation->{'cond'} })[0]) =~ s{^self\.}{};
($args{'destination_column'} = (keys %{ $relation->{'cond'} })[0]) =~ s{^foreign\.}{};
for my $cascade (qw/cascade_delete cascade_update/) {
$args{ $cascade } = $attr->{ $cascade } if exists $attr->{ $cascade };
}
# do not reorder
$args{'relation_type'} = $attr->{'accessor'} eq 'multi' ? $HAS_MANY
: $attr->{'is_depends_on'} ? $BELONGS_TO
: exists $attr->{'join_type'} ? $MIGHT_HAVE
: $HAS_ONE
;
$class->$orig(%args);
lib/DBIx/Class/Visualizer/Relation.pm view on Meta::CPAN
sub TO_JSON {
my $self = shift;
return +{
origin_table => $self->origin_table,
origin_column => $self->origin_column,
destination_table => $self->destination_table,
destination_column => $self->destination_column,
relation_type => $self->relation_type,
provided $self->has_cascade_delete,
cascade_delete => $self->cascade_delete,
provided $self->has_cascade_update,
cascade_update => $self->cascade_update,
};
}
1;
__END__
=pod
=encoding UTF-8
( run in 0.577 second using v1.01-cache-2.11-cpan-49f99fa48dc )