File Coverage

lib/Neo4j/Driver/Type/Relationship.pm
Criterion Covered Total %
statement 60 60 100.0
branch 18 18 100.0
condition n/a
subroutine 18 18 100.0
pod 9 10 100.0
total 105 106 100.0


line stmt bran cond sub pod time code
1 17     17   296 use 5.010;
  17         58  
2 17     17   93 use strict;
  17         30  
  17         420  
3 17     17   82 use warnings;
  17         40  
  17         522  
4 17     17   105 use utf8;
  17         70  
  17         118  
5              
6             package Neo4j::Driver::Type::Relationship;
7             # ABSTRACT: Describes a relationship from a Neo4j graph
8             $Neo4j::Driver::Type::Relationship::VERSION = '0.40';
9              
10 17     17   1052 use parent 'Neo4j::Types::Relationship';
  17         29  
  17         112  
11 17     17   13501 use overload '%{}' => \&_hash, fallback => 1;
  17         33  
  17         122  
12              
13              
14             sub get {
15 6     6 1 33 my ($self, $property) = @_;
16            
17 6         44 return $$self->{$property};
18             }
19              
20              
21             sub type {
22 9     9 1 6773 my ($self) = @_;
23            
24 9         45 return $$self->{_meta}->{type};
25             }
26              
27              
28             sub start_element_id {
29 9     9 1 6373 my ($self) = @_;
30            
31 9 100       49 return $$self->{_meta}->{element_start} if defined $$self->{_meta}->{element_start};
32 4         22 return $$self->{_meta}->{start};
33             }
34              
35              
36             sub start_id {
37 10     10 1 6742 my ($self) = @_;
38            
39 10 100       66 return $$self->{_meta}->{start} if defined $$self->{_meta}->{start};
40            
41 5         73 warnings::warnif deprecated => "Relationship->start_id() is deprecated since Neo4j 5; use start_element_id()";
42 5         1684 my ($id) = $$self->{_meta}->{element_start} =~ m/^4:[^:]*:([0-9]+)/;
43 5 100       20 $id = 0 + $id if defined $id;
44 5         15 return $id;
45             }
46              
47              
48             sub end_element_id {
49 9     9 1 6758 my ($self) = @_;
50            
51 9 100       49 return $$self->{_meta}->{element_end} if defined $$self->{_meta}->{element_end};
52 4         18 return $$self->{_meta}->{end};
53             }
54              
55              
56             sub end_id {
57 10     10 1 6826 my ($self) = @_;
58            
59 10 100       54 return $$self->{_meta}->{end} if defined $$self->{_meta}->{end};
60            
61 5         71 warnings::warnif deprecated => "Relationship->end_id() is deprecated since Neo4j 5; use end_element_id()";
62 5         1638 my ($id) = $$self->{_meta}->{element_end} =~ m/^4:[^:]*:([0-9]+)/;
63 5 100       21 $id = 0 + $id if defined $id;
64 5         16 return $id;
65             }
66              
67              
68             sub properties {
69 9     9 1 6098 my ($self) = @_;
70            
71 9         42 my $properties = { %$$self };
72 9         18 delete $properties->{_meta};
73 9         49 return $properties;
74             }
75              
76              
77             sub element_id {
78 9     9 1 7362 my ($self) = @_;
79            
80 9 100       79 return $$self->{_meta}->{element_id} if defined $$self->{_meta}->{element_id};
81 4         16 return $$self->{_meta}->{id};
82             }
83              
84              
85             sub id {
86 22     22 1 7093 my ($self) = @_;
87            
88 22 100       135 return $$self->{_meta}->{id} if defined $$self->{_meta}->{id};
89            
90 5         67 warnings::warnif deprecated => "Relationship->id() is deprecated since Neo4j 5; use element_id()";
91 5         1703 my ($id) = $$self->{_meta}->{element_id} =~ m/^5:[^:]*:([0-9]+)/;
92 5 100       19 $id = 0 + $id if defined $id;
93 5         14 return $id;
94             }
95              
96              
97             sub deleted {
98             # uncoverable pod
99 1     1 0 4 my ($self) = @_;
100            
101 1         16 warnings::warnif deprecated => __PACKAGE__ . "->deleted() is deprecated";
102 1         340 return $$self->{_meta}->{deleted};
103             }
104              
105              
106             sub _hash {
107 1     1   58 my ($self) = @_;
108            
109 1         16 warnings::warnif deprecated => "Direct hash access is deprecated; use " . __PACKAGE__ . "->properties()";
110 1         680 return $$self;
111             }
112              
113              
114             # for experimental Cypher type system customisation only
115             sub _private {
116 1     1   20 my ($self) = @_;
117            
118 1         6 return $$self;
119             }
120              
121              
122             1;
123              
124             __END__