File Coverage

lib/Data/TagDB/LinkIterator.pm
Criterion Covered Total %
statement 14 36 38.8
branch 0 8 0.0
condition 0 3 0.0
subroutine 5 8 62.5
pod 3 3 100.0
total 22 58 37.9


line stmt bran cond sub pod time code
1             # Copyright (c) 2024-2025 Philipp Schafft
2              
3             # licensed under Artistic License 2.0 (see LICENSE file)
4              
5             # ABSTRACT: Work with Tag databases
6              
7             package Data::TagDB::LinkIterator;
8              
9 1     1   15 use v5.10;
  1         4  
10 1     1   8 use strict;
  1         1  
  1         30  
11 1     1   5 use warnings;
  1         1  
  1         48  
12              
13 1     1   5 use parent 'Data::TagDB::Iterator';
  1         2  
  1         7  
14              
15 1     1   56 use Carp;
  1         2  
  1         497  
16              
17             our $VERSION = v0.12;
18              
19              
20             sub new {
21 0     0 1   my ($pkg, %opts) = @_;
22              
23 0           foreach my $required (qw(db query package tag_keys raw_keys)) {
24 0 0         croak 'Missing required member: '.$required unless defined $opts{$required};
25             }
26              
27 0           return bless \%opts, $pkg;
28             }
29              
30             sub next {
31 0     0 1   my ($self) = @_;
32 0           my Data::TagDB $db = $self->db;
33 0           my $row = $self->{query}->fetchrow_hashref;
34 0           my %args;
35              
36 0 0         return undef unless defined $row;
37              
38 0           foreach my $key (keys %{$self->{tag_keys}}) {
  0            
39 0           my $value = $row->{$self->{tag_keys}{$key}};
40 0 0 0       next unless defined($value) && $value > 0;
41              
42 0           $args{$key} = $db->tag_by_dbid($value);
43             }
44              
45 0           foreach my $key (keys %{$self->{raw_keys}}) {
  0            
46 0           my $value = $row->{$self->{raw_keys}{$key}};
47 0 0         next unless defined($value);
48              
49 0           $args{$key} = $value;
50             }
51              
52 0           return $self->{package}->_new(%args, _row => $row, db => $db);
53             }
54              
55             sub finish {
56 0     0 1   my ($self) = @_;
57 0           $self->{query}->finish;
58             }
59              
60             1;
61              
62             __END__
63              
64             =pod
65              
66             =encoding UTF-8
67              
68             =head1 NAME
69              
70             Data::TagDB::LinkIterator - Work with Tag databases
71              
72             =head1 VERSION
73              
74             version v0.12
75              
76             =head1 SYNOPSIS
77              
78             use Data::TagDB;
79              
80             This is an interal package. See L<Data::TagDB::Iterator>.
81              
82             =head1 AUTHOR
83              
84             Philipp Schafft <lion@cpan.org>
85              
86             =head1 COPYRIGHT AND LICENSE
87              
88             This software is Copyright (c) 2024-2025 by Philipp Schafft <lion@cpan.org>.
89              
90             This is free software, licensed under:
91              
92             The Artistic License 2.0 (GPL Compatible)
93              
94             =cut