App-DrivePlayer

 view release on metacpan or  search on metacpan

lib/App/DrivePlayer/DB.pm  view on Meta::CPAN

    my ($self, $id, %fields) = @_;
    my $row = $self->_rs('Track')->find($id) or return;
    my %allowed = map { $_ => 1 }
        qw( title artist album track_number year duration_ms genre comment );
    my %update = map { $_ => $fields{$_} }
        grep { $allowed{$_} } keys %fields;
    $row->update(\%update) if %update;
}

# Count tracks whose $field exactly equals $value, optionally excluding one
# track id. Used to decide whether an edit should offer to propagate a
# rename to siblings (e.g. cleaning up mojibake artist/album/genre values
# without having to revisit every track).
sub count_tracks_with_field {
    my ($self, $field, $value, $exclude_id) = @_;
    return 0 unless defined $value && length $value;
    my %where = ($field => $value);
    $where{id} = { '!=' => $exclude_id } if defined $exclude_id;
    return $self->_rs('Track')->search(\%where)->count;
}



( run in 0.712 second using v1.01-cache-2.11-cpan-c966e8aa7e8 )