use lunar_lib::database::{DatabaseEntry, Tree};
use crate::{
database::{LibraryDb, Patchable, track_tree},
library::track::{Track, TrackId},
};
impl DatabaseEntry for Track {
type Id = TrackId;
type EntryDb = LibraryDb;
const VERSION_NUMBER: u32 = 1;
fn tree(db: &LibraryDb) -> Tree {
track_tree(db)
}
fn id(&self) -> TrackId {
self.id
}
}
impl PartialEq for Track {
fn eq(&self, other: &Self) -> bool {
self.id == other.id
}
}
impl Eq for Track {}
impl std::hash::Hash for Track {
fn hash<H: std::hash::Hasher>(&self, state: &mut H) {
state.write(&*self.id);
}
}
impl Patchable<Self> for Track {
fn patch(&mut self, patch: Self) {
let Track {
id: _,
container: _,
metadata,
loudnorm_analysis: _,
version: _,
} = patch;
self.metadata.patch(metadata);
}
}