App-DrivePlayer
view release on metacpan or search on metacpan
lib/App/DrivePlayer/DB.pm view on Meta::CPAN
sub count_unseen_tracks {
my ($self, $scan_folder_id, $seen) = @_;
my @keep = keys %$seen;
my @folder_ids = $self->_rs('Folder')
->search({ scan_folder_id => $scan_folder_id })
->get_column('id')->all;
return 0 unless @folder_ids;
return $self->_rs('Track')->search({
folder_id => { -in => \@folder_ids },
(@keep ? (drive_id => { -not_in => \@keep }) : ()),
})->count;
}
sub remove_unseen_tracks {
my ($self, $scan_folder_id, $seen) = @_;
my @keep = keys %$seen;
my @folder_ids = $self->_rs('Folder')
->search({ scan_folder_id => $scan_folder_id })
->get_column('id')->all;
return 0 unless @folder_ids;
return $self->_rs('Track')->search({
folder_id => { -in => \@folder_ids },
(@keep ? (drive_id => { -not_in => \@keep }) : ()),
})->delete;
}
sub remove_unseen_folders {
my ($self, $scan_folder_id, $seen) = @_;
my @keep = keys %$seen;
return $self->_rs('Folder')->search({
scan_folder_id => $scan_folder_id,
(@keep ? (drive_id => { -not_in => \@keep }) : ()),
})->delete;
}
1;
__END__
=head1 NAME
App::DrivePlayer::DB - SQLite database facade for the DrivePlayer library
t/unit/Test/DrivePlayer/Player.pm view on Meta::CPAN
$p->_set_state('pause');
is $p->state, 'pause', 'state set to pause';
is $state_changes[-1], 'pause', 'on_state_change fired for pause';
# Setting same state should not fire callback again
my $prev_count = scalar @state_changes;
$p->_set_state('pause');
is scalar @state_changes, $prev_count, 'on_state_change not fired for same state';
}
sub on_state_change_not_required : Tests(1) {
my ($self) = @_;
my $p = fake_player();
lives_ok { $p->_set_state('play') } '_set_state lives without on_state_change callback';
}
# ---- End-of-file handling ----
sub handle_end_file_eof : Tests(3) {
my ($self) = @_;
( run in 0.703 second using v1.01-cache-2.11-cpan-39bf76dae61 )