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