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 )