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