Id should be id only
This commit is contained in:
parent
3b57cce671
commit
b043b6b207
@ -9,17 +9,19 @@ use crate::core::collection::{
|
||||
#[derive(Clone, Debug, PartialEq, Eq)]
|
||||
pub struct Album {
|
||||
pub id: AlbumId,
|
||||
pub date: AlbumDate,
|
||||
pub seq: AlbumSeq,
|
||||
pub tracks: Vec<Track>,
|
||||
}
|
||||
|
||||
/// The album identifier.
|
||||
#[derive(Clone, Debug, PartialEq, PartialOrd, Ord, Eq, Hash)]
|
||||
pub struct AlbumId {
|
||||
pub date: AlbumDate,
|
||||
pub title: String,
|
||||
}
|
||||
|
||||
// There are crates for handling dates, but we don't need much complexity beyond year-month-day.
|
||||
/// The album's release date.
|
||||
#[derive(Clone, Debug, PartialEq, PartialOrd, Ord, Eq, Hash)]
|
||||
pub struct AlbumDate {
|
||||
pub year: u32,
|
||||
@ -27,6 +29,10 @@ pub struct AlbumDate {
|
||||
pub day: u8,
|
||||
}
|
||||
|
||||
/// The album's sequence to determine order when two or more albums have the same release date.
|
||||
#[derive(Clone, Copy, Debug, PartialEq, PartialOrd, Ord, Eq, Hash)]
|
||||
pub struct AlbumSeq(pub u8);
|
||||
|
||||
#[repr(u8)]
|
||||
#[derive(Clone, Copy, Debug, PartialEq, PartialOrd, Ord, Eq, Hash)]
|
||||
pub enum AlbumMonth {
|
||||
@ -66,8 +72,8 @@ impl From<u8> for AlbumMonth {
|
||||
}
|
||||
|
||||
impl Album {
|
||||
pub fn get_sort_key(&self) -> &AlbumId {
|
||||
&self.id
|
||||
pub fn get_sort_key(&self) -> (&AlbumDate, &AlbumSeq, &AlbumId) {
|
||||
(&self.date, &self.seq, &self.id)
|
||||
}
|
||||
}
|
||||
|
||||
@ -79,7 +85,7 @@ impl PartialOrd for Album {
|
||||
|
||||
impl Ord for Album {
|
||||
fn cmp(&self, other: &Self) -> std::cmp::Ordering {
|
||||
self.id.cmp(&other.id)
|
||||
self.get_sort_key().cmp(&other.get_sort_key())
|
||||
}
|
||||
}
|
||||
|
||||
@ -116,6 +122,38 @@ mod tests {
|
||||
assert_eq!(<u8 as Into<AlbumMonth>>::into(255), AlbumMonth::None);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn same_date_seq_cmp() {
|
||||
let date = AlbumDate {
|
||||
year: 2024,
|
||||
month: AlbumMonth::March,
|
||||
day: 2,
|
||||
};
|
||||
|
||||
let album_id_1 = AlbumId {
|
||||
title: String::from("album z"),
|
||||
};
|
||||
let album_1 = Album {
|
||||
id: album_id_1,
|
||||
date: date.clone(),
|
||||
seq: AlbumSeq(1),
|
||||
tracks: vec![],
|
||||
};
|
||||
|
||||
let album_id_2 = AlbumId {
|
||||
title: String::from("album a"),
|
||||
};
|
||||
let album_2 = Album {
|
||||
id: album_id_2,
|
||||
date: date.clone(),
|
||||
seq: AlbumSeq(2),
|
||||
tracks: vec![],
|
||||
};
|
||||
|
||||
assert_ne!(album_1, album_2);
|
||||
assert!(album_1 < album_2);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn merge_album_no_overlap() {
|
||||
let left = FULL_COLLECTION[0].albums[0].to_owned();
|
||||
@ -129,9 +167,9 @@ mod tests {
|
||||
let merged = left.clone().merge(right.clone());
|
||||
assert_eq!(expected, merged);
|
||||
|
||||
// Non-overlapping merge should be commutative.
|
||||
// Non-overlapping merge should be commutative in the tracks.
|
||||
let merged = right.clone().merge(left.clone());
|
||||
assert_eq!(expected, merged);
|
||||
assert_eq!(expected.tracks, merged.tracks);
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -4,6 +4,7 @@ use crate::core::collection::merge::Merge;
|
||||
#[derive(Clone, Debug, PartialEq, Eq)]
|
||||
pub struct Track {
|
||||
pub id: TrackId,
|
||||
pub number: TrackNum,
|
||||
pub artist: Vec<String>,
|
||||
pub quality: TrackQuality,
|
||||
}
|
||||
@ -11,10 +12,13 @@ pub struct Track {
|
||||
/// The track identifier.
|
||||
#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
|
||||
pub struct TrackId {
|
||||
pub number: u32,
|
||||
pub title: String,
|
||||
}
|
||||
|
||||
/// The track number.
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
|
||||
pub struct TrackNum(pub u32);
|
||||
|
||||
/// The track quality. Combines format and bitrate information.
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
||||
pub struct TrackQuality {
|
||||
@ -23,8 +27,8 @@ pub struct TrackQuality {
|
||||
}
|
||||
|
||||
impl Track {
|
||||
pub fn get_sort_key(&self) -> &TrackId {
|
||||
&self.id
|
||||
pub fn get_sort_key(&self) -> (&TrackNum, &TrackId) {
|
||||
(&self.number, &self.id)
|
||||
}
|
||||
}
|
||||
|
||||
@ -43,7 +47,7 @@ impl PartialOrd for Track {
|
||||
|
||||
impl Ord for Track {
|
||||
fn cmp(&self, other: &Self) -> std::cmp::Ordering {
|
||||
self.id.cmp(&other.id)
|
||||
self.get_sort_key().cmp(&other.get_sort_key())
|
||||
}
|
||||
}
|
||||
|
||||
@ -61,9 +65,9 @@ mod tests {
|
||||
fn merge_track() {
|
||||
let left = Track {
|
||||
id: TrackId {
|
||||
number: 4,
|
||||
title: String::from("a title"),
|
||||
},
|
||||
number: TrackNum(4),
|
||||
artist: vec![String::from("left artist")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -72,6 +76,7 @@ mod tests {
|
||||
};
|
||||
let right = Track {
|
||||
id: left.id.clone(),
|
||||
number: left.number,
|
||||
artist: vec![String::from("right artist")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Mp3,
|
||||
|
@ -2,9 +2,9 @@ use std::collections::HashMap;
|
||||
|
||||
use crate::core::{
|
||||
collection::{
|
||||
album::{Album, AlbumDate, AlbumId},
|
||||
album::{Album, AlbumDate, AlbumId, AlbumSeq},
|
||||
artist::{Artist, ArtistId},
|
||||
track::{Track, TrackId, TrackQuality},
|
||||
track::{Track, TrackId, TrackNum, TrackQuality},
|
||||
Collection, Merge,
|
||||
},
|
||||
database::IDatabase,
|
||||
@ -99,19 +99,20 @@ impl<LIB, DB> MusicHoard<LIB, DB> {
|
||||
let artist_sort = item.album_artist_sort.map(|s| ArtistId { name: s });
|
||||
|
||||
let album_id = AlbumId {
|
||||
date: AlbumDate {
|
||||
year: item.album_year,
|
||||
month: item.album_month,
|
||||
day: item.album_day,
|
||||
},
|
||||
title: item.album_title,
|
||||
};
|
||||
|
||||
let album_date = AlbumDate {
|
||||
year: item.album_year,
|
||||
month: item.album_month,
|
||||
day: item.album_day,
|
||||
};
|
||||
|
||||
let track = Track {
|
||||
id: TrackId {
|
||||
number: item.track_number,
|
||||
title: item.track_title,
|
||||
},
|
||||
number: TrackNum(item.track_number),
|
||||
artist: item.track_artist,
|
||||
quality: TrackQuality {
|
||||
format: item.track_format,
|
||||
@ -153,6 +154,8 @@ impl<LIB, DB> MusicHoard<LIB, DB> {
|
||||
Some(album) => album.tracks.push(track),
|
||||
None => artist.albums.push(Album {
|
||||
id: album_id,
|
||||
date: album_date,
|
||||
seq: AlbumSeq(0),
|
||||
tracks: vec![track],
|
||||
}),
|
||||
}
|
||||
@ -891,7 +894,7 @@ mod tests {
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn rescan_library_album_title_date_clash() {
|
||||
fn rescan_library_album_id_clash() {
|
||||
let mut library = MockILibrary::new();
|
||||
|
||||
let mut expected = LIBRARY_COLLECTION.to_owned();
|
||||
@ -899,15 +902,10 @@ mod tests {
|
||||
let clashed_album_id = &expected[1].albums[0].id;
|
||||
|
||||
let mut items = LIBRARY_ITEMS.to_owned();
|
||||
for item in items.iter_mut().filter(|it| {
|
||||
(it.album_year == removed_album_id.date.year)
|
||||
&& (it.album_month == removed_album_id.date.month)
|
||||
&& (it.album_day == removed_album_id.date.day)
|
||||
&& (it.album_title == removed_album_id.title)
|
||||
}) {
|
||||
item.album_year = clashed_album_id.date.year;
|
||||
item.album_month = clashed_album_id.date.month;
|
||||
item.album_day = clashed_album_id.date.day;
|
||||
for item in items
|
||||
.iter_mut()
|
||||
.filter(|it| it.album_title == removed_album_id.title)
|
||||
{
|
||||
item.album_title = clashed_album_id.title.clone();
|
||||
}
|
||||
|
||||
@ -925,6 +923,7 @@ mod tests {
|
||||
let mut music_hoard = MusicHoard::library(library);
|
||||
|
||||
music_hoard.rescan_library().unwrap();
|
||||
assert_eq!(music_hoard.get_collection()[0], expected[0]);
|
||||
assert_eq!(music_hoard.get_collection(), &expected);
|
||||
}
|
||||
|
||||
|
@ -2,9 +2,9 @@ use once_cell::sync::Lazy;
|
||||
use std::collections::HashMap;
|
||||
|
||||
use crate::core::collection::{
|
||||
album::{Album, AlbumDate, AlbumId, AlbumMonth},
|
||||
album::{Album, AlbumDate, AlbumId, AlbumMonth, AlbumSeq},
|
||||
artist::{Artist, ArtistId, MusicBrainz},
|
||||
track::{Track, TrackFormat, TrackId, TrackQuality},
|
||||
track::{Track, TrackFormat, TrackId, TrackNum, TrackQuality},
|
||||
};
|
||||
use crate::tests::*;
|
||||
|
||||
|
154
src/tests.rs
154
src/tests.rs
@ -11,19 +11,20 @@ macro_rules! library_collection {
|
||||
albums: vec![
|
||||
Album {
|
||||
id: AlbumId {
|
||||
date: AlbumDate {
|
||||
year: 1998,
|
||||
month: AlbumMonth::None,
|
||||
day: 0,
|
||||
},
|
||||
title: "album_title a.a".to_string(),
|
||||
},
|
||||
date: AlbumDate {
|
||||
year: 1998,
|
||||
month: AlbumMonth::None,
|
||||
day: 0,
|
||||
},
|
||||
seq: AlbumSeq(0),
|
||||
tracks: vec![
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 1,
|
||||
title: "track a.a.1".to_string(),
|
||||
},
|
||||
number: TrackNum(1),
|
||||
artist: vec!["artist a.a.1".to_string()],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -32,9 +33,9 @@ macro_rules! library_collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 2,
|
||||
title: "track a.a.2".to_string(),
|
||||
},
|
||||
number: TrackNum(2),
|
||||
artist: vec![
|
||||
"artist a.a.2.1".to_string(),
|
||||
"artist a.a.2.2".to_string(),
|
||||
@ -46,9 +47,9 @@ macro_rules! library_collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 3,
|
||||
title: "track a.a.3".to_string(),
|
||||
},
|
||||
number: TrackNum(3),
|
||||
artist: vec!["artist a.a.3".to_string()],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -57,9 +58,9 @@ macro_rules! library_collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 4,
|
||||
title: "track a.a.4".to_string(),
|
||||
},
|
||||
number: TrackNum(4),
|
||||
artist: vec!["artist a.a.4".to_string()],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -70,19 +71,20 @@ macro_rules! library_collection {
|
||||
},
|
||||
Album {
|
||||
id: AlbumId {
|
||||
date: AlbumDate {
|
||||
year: 2015,
|
||||
month: AlbumMonth::April,
|
||||
day: 0,
|
||||
},
|
||||
title: "album_title a.b".to_string(),
|
||||
},
|
||||
date: AlbumDate {
|
||||
year: 2015,
|
||||
month: AlbumMonth::April,
|
||||
day: 0,
|
||||
},
|
||||
seq: AlbumSeq(0),
|
||||
tracks: vec![
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 1,
|
||||
title: "track a.b.1".to_string(),
|
||||
},
|
||||
number: TrackNum(1),
|
||||
artist: vec!["artist a.b.1".to_string()],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -91,9 +93,9 @@ macro_rules! library_collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 2,
|
||||
title: "track a.b.2".to_string(),
|
||||
},
|
||||
number: TrackNum(2),
|
||||
artist: vec!["artist a.b.2".to_string()],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -114,19 +116,20 @@ macro_rules! library_collection {
|
||||
albums: vec![
|
||||
Album {
|
||||
id: AlbumId {
|
||||
date: AlbumDate {
|
||||
year: 2003,
|
||||
month: AlbumMonth::June,
|
||||
day: 6,
|
||||
},
|
||||
title: "album_title b.a".to_string(),
|
||||
},
|
||||
date: AlbumDate {
|
||||
year: 2003,
|
||||
month: AlbumMonth::June,
|
||||
day: 6,
|
||||
},
|
||||
seq: AlbumSeq(0),
|
||||
tracks: vec![
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 1,
|
||||
title: "track b.a.1".to_string(),
|
||||
},
|
||||
number: TrackNum(1),
|
||||
artist: vec!["artist b.a.1".to_string()],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Mp3,
|
||||
@ -135,9 +138,9 @@ macro_rules! library_collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 2,
|
||||
title: "track b.a.2".to_string(),
|
||||
},
|
||||
number: TrackNum(2),
|
||||
artist: vec![
|
||||
"artist b.a.2.1".to_string(),
|
||||
"artist b.a.2.2".to_string(),
|
||||
@ -151,19 +154,20 @@ macro_rules! library_collection {
|
||||
},
|
||||
Album {
|
||||
id: AlbumId {
|
||||
date: AlbumDate {
|
||||
year: 2008,
|
||||
month: AlbumMonth::None,
|
||||
day: 0,
|
||||
},
|
||||
title: "album_title b.b".to_string(),
|
||||
},
|
||||
date: AlbumDate {
|
||||
year: 2008,
|
||||
month: AlbumMonth::None,
|
||||
day: 0,
|
||||
},
|
||||
seq: AlbumSeq(0),
|
||||
tracks: vec![
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 1,
|
||||
title: "track b.b.1".to_string(),
|
||||
},
|
||||
number: TrackNum(1),
|
||||
artist: vec!["artist b.b.1".to_string()],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -172,9 +176,9 @@ macro_rules! library_collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 2,
|
||||
title: "track b.b.2".to_string(),
|
||||
},
|
||||
number: TrackNum(2),
|
||||
artist: vec![
|
||||
"artist b.b.2.1".to_string(),
|
||||
"artist b.b.2.2".to_string(),
|
||||
@ -188,19 +192,20 @@ macro_rules! library_collection {
|
||||
},
|
||||
Album {
|
||||
id: AlbumId {
|
||||
date: AlbumDate {
|
||||
year: 2009,
|
||||
month: AlbumMonth::None,
|
||||
day: 0,
|
||||
},
|
||||
title: "album_title b.c".to_string(),
|
||||
},
|
||||
date: AlbumDate {
|
||||
year: 2009,
|
||||
month: AlbumMonth::None,
|
||||
day: 0,
|
||||
},
|
||||
seq: AlbumSeq(0),
|
||||
tracks: vec![
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 1,
|
||||
title: "track b.c.1".to_string(),
|
||||
},
|
||||
number: TrackNum(1),
|
||||
artist: vec!["artist b.c.1".to_string()],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Mp3,
|
||||
@ -209,9 +214,9 @@ macro_rules! library_collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 2,
|
||||
title: "track b.c.2".to_string(),
|
||||
},
|
||||
number: TrackNum(2),
|
||||
artist: vec![
|
||||
"artist b.c.2.1".to_string(),
|
||||
"artist b.c.2.2".to_string(),
|
||||
@ -225,19 +230,20 @@ macro_rules! library_collection {
|
||||
},
|
||||
Album {
|
||||
id: AlbumId {
|
||||
date: AlbumDate {
|
||||
year: 2015,
|
||||
month: AlbumMonth::None,
|
||||
day: 0,
|
||||
},
|
||||
title: "album_title b.d".to_string(),
|
||||
},
|
||||
date: AlbumDate {
|
||||
year: 2015,
|
||||
month: AlbumMonth::None,
|
||||
day: 0,
|
||||
},
|
||||
seq: AlbumSeq(0),
|
||||
tracks: vec![
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 1,
|
||||
title: "track b.d.1".to_string(),
|
||||
},
|
||||
number: TrackNum(1),
|
||||
artist: vec!["artist b.d.1".to_string()],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Mp3,
|
||||
@ -246,9 +252,9 @@ macro_rules! library_collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 2,
|
||||
title: "track b.d.2".to_string(),
|
||||
},
|
||||
number: TrackNum(2),
|
||||
artist: vec![
|
||||
"artist b.d.2.1".to_string(),
|
||||
"artist b.d.2.2".to_string(),
|
||||
@ -274,19 +280,20 @@ macro_rules! library_collection {
|
||||
albums: vec![
|
||||
Album {
|
||||
id: AlbumId {
|
||||
date: AlbumDate {
|
||||
year: 1985,
|
||||
month: AlbumMonth::None,
|
||||
day: 0,
|
||||
},
|
||||
title: "album_title c.a".to_string(),
|
||||
},
|
||||
date: AlbumDate {
|
||||
year: 1985,
|
||||
month: AlbumMonth::None,
|
||||
day: 0,
|
||||
},
|
||||
seq: AlbumSeq(0),
|
||||
tracks: vec![
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 1,
|
||||
title: "track c.a.1".to_string(),
|
||||
},
|
||||
number: TrackNum(1),
|
||||
artist: vec!["artist c.a.1".to_string()],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Mp3,
|
||||
@ -295,9 +302,9 @@ macro_rules! library_collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 2,
|
||||
title: "track c.a.2".to_string(),
|
||||
},
|
||||
number: TrackNum(2),
|
||||
artist: vec![
|
||||
"artist c.a.2.1".to_string(),
|
||||
"artist c.a.2.2".to_string(),
|
||||
@ -311,19 +318,20 @@ macro_rules! library_collection {
|
||||
},
|
||||
Album {
|
||||
id: AlbumId {
|
||||
date: AlbumDate {
|
||||
year: 2018,
|
||||
month: AlbumMonth::None,
|
||||
day: 0,
|
||||
},
|
||||
title: "album_title c.b".to_string(),
|
||||
},
|
||||
date: AlbumDate {
|
||||
year: 2018,
|
||||
month: AlbumMonth::None,
|
||||
day: 0,
|
||||
},
|
||||
seq: AlbumSeq(0),
|
||||
tracks: vec![
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 1,
|
||||
title: "track c.b.1".to_string(),
|
||||
},
|
||||
number: TrackNum(1),
|
||||
artist: vec!["artist c.b.1".to_string()],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -332,9 +340,9 @@ macro_rules! library_collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 2,
|
||||
title: "track c.b.2".to_string(),
|
||||
},
|
||||
number: TrackNum(2),
|
||||
artist: vec![
|
||||
"artist c.b.2.1".to_string(),
|
||||
"artist c.b.2.2".to_string(),
|
||||
@ -358,19 +366,20 @@ macro_rules! library_collection {
|
||||
albums: vec![
|
||||
Album {
|
||||
id: AlbumId {
|
||||
date: AlbumDate {
|
||||
year: 1995,
|
||||
month: AlbumMonth::None,
|
||||
day: 0,
|
||||
},
|
||||
title: "album_title d.a".to_string(),
|
||||
},
|
||||
date: AlbumDate {
|
||||
year: 1995,
|
||||
month: AlbumMonth::None,
|
||||
day: 0,
|
||||
},
|
||||
seq: AlbumSeq(0),
|
||||
tracks: vec![
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 1,
|
||||
title: "track d.a.1".to_string(),
|
||||
},
|
||||
number: TrackNum(1),
|
||||
artist: vec!["artist d.a.1".to_string()],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Mp3,
|
||||
@ -379,9 +388,9 @@ macro_rules! library_collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 2,
|
||||
title: "track d.a.2".to_string(),
|
||||
},
|
||||
number: TrackNum(2),
|
||||
artist: vec![
|
||||
"artist d.a.2.1".to_string(),
|
||||
"artist d.a.2.2".to_string(),
|
||||
@ -395,19 +404,20 @@ macro_rules! library_collection {
|
||||
},
|
||||
Album {
|
||||
id: AlbumId {
|
||||
date: AlbumDate {
|
||||
year: 2028,
|
||||
month: AlbumMonth::None,
|
||||
day: 0,
|
||||
},
|
||||
title: "album_title d.b".to_string(),
|
||||
},
|
||||
date: AlbumDate {
|
||||
year: 2028,
|
||||
month: AlbumMonth::None,
|
||||
day: 0,
|
||||
},
|
||||
seq: AlbumSeq(0),
|
||||
tracks: vec![
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 1,
|
||||
title: "track d.b.1".to_string(),
|
||||
},
|
||||
number: TrackNum(1),
|
||||
artist: vec!["artist d.b.1".to_string()],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -416,9 +426,9 @@ macro_rules! library_collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 2,
|
||||
title: "track d.b.2".to_string(),
|
||||
},
|
||||
number: TrackNum(2),
|
||||
artist: vec![
|
||||
"artist d.b.2.1".to_string(),
|
||||
"artist d.b.2.2".to_string(),
|
||||
|
@ -1,7 +1,7 @@
|
||||
use std::cmp;
|
||||
|
||||
use musichoard::collection::{
|
||||
album::{Album, AlbumId},
|
||||
album::{Album, AlbumDate, AlbumId, AlbumSeq},
|
||||
track::Track,
|
||||
};
|
||||
|
||||
@ -28,7 +28,7 @@ impl AlbumSelection {
|
||||
|
||||
pub fn reinitialise(&mut self, albums: &[Album], album: Option<IdSelectAlbum>) {
|
||||
if let Some(album) = album {
|
||||
let result = albums.binary_search_by(|a| a.get_sort_key().cmp(&album.album_id));
|
||||
let result = albums.binary_search_by(|a| a.get_sort_key().cmp(&album.get_sort_key()));
|
||||
match result {
|
||||
Ok(index) => self.reinitialise_with_index(albums, index, album.track),
|
||||
Err(index) => self.reinitialise_with_index(albums, index, None),
|
||||
@ -161,7 +161,7 @@ impl AlbumSelection {
|
||||
}
|
||||
|
||||
pub struct IdSelectAlbum {
|
||||
album_id: AlbumId,
|
||||
key: (AlbumDate, AlbumSeq, AlbumId),
|
||||
track: Option<IdSelectTrack>,
|
||||
}
|
||||
|
||||
@ -169,12 +169,17 @@ impl IdSelectAlbum {
|
||||
pub fn get(albums: &[Album], selection: &AlbumSelection) -> Option<Self> {
|
||||
selection.state.list.selected().map(|index| {
|
||||
let album = &albums[index];
|
||||
let key = album.get_sort_key();
|
||||
IdSelectAlbum {
|
||||
album_id: album.get_sort_key().clone(),
|
||||
key: (key.0.to_owned(), key.1.to_owned(), key.2.to_owned()),
|
||||
track: IdSelectTrack::get(&album.tracks, &selection.track),
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
pub fn get_sort_key(&self) -> (&AlbumDate, &AlbumSeq, &AlbumId) {
|
||||
(&self.key.0, &self.key.1, &self.key.2)
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
|
@ -1,6 +1,6 @@
|
||||
use std::cmp;
|
||||
|
||||
use musichoard::collection::track::{Track, TrackId};
|
||||
use musichoard::collection::track::{Track, TrackId, TrackNum};
|
||||
|
||||
use crate::tui::app::selection::{Delta, SelectionState, WidgetState};
|
||||
|
||||
@ -20,7 +20,7 @@ impl TrackSelection {
|
||||
|
||||
pub fn reinitialise(&mut self, tracks: &[Track], track: Option<IdSelectTrack>) {
|
||||
if let Some(track) = track {
|
||||
let result = tracks.binary_search_by(|t| t.get_sort_key().cmp(&track.track_id));
|
||||
let result = tracks.binary_search_by(|t| t.get_sort_key().cmp(&track.get_sort_key()));
|
||||
match result {
|
||||
Ok(index) | Err(index) => self.reinitialise_with_index(tracks, index),
|
||||
}
|
||||
@ -101,18 +101,23 @@ impl TrackSelection {
|
||||
}
|
||||
|
||||
pub struct IdSelectTrack {
|
||||
track_id: TrackId,
|
||||
key: (TrackNum, TrackId),
|
||||
}
|
||||
|
||||
impl IdSelectTrack {
|
||||
pub fn get(tracks: &[Track], selection: &TrackSelection) -> Option<Self> {
|
||||
selection.state.list.selected().map(|index| {
|
||||
let track = &tracks[index];
|
||||
let key = track.get_sort_key();
|
||||
IdSelectTrack {
|
||||
track_id: track.get_sort_key().clone(),
|
||||
key: (key.0.to_owned(), key.1.to_owned()),
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
pub fn get_sort_key(&self) -> (&TrackNum, &TrackId) {
|
||||
(&self.key.0, &self.key.1)
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
|
@ -1,7 +1,7 @@
|
||||
use musichoard::collection::{
|
||||
album::{Album, AlbumDate, AlbumId, AlbumMonth},
|
||||
album::{Album, AlbumDate, AlbumId, AlbumMonth, AlbumSeq},
|
||||
artist::{Artist, ArtistId, MusicBrainz},
|
||||
track::{Track, TrackFormat, TrackId, TrackQuality},
|
||||
track::{Track, TrackFormat, TrackId, TrackNum, TrackQuality},
|
||||
};
|
||||
use once_cell::sync::Lazy;
|
||||
use std::collections::HashMap;
|
||||
|
@ -289,9 +289,7 @@ impl<'a, 'b> AlbumState<'a, 'b> {
|
||||
"Title: {}\n\
|
||||
Year: {}",
|
||||
album.map(|a| a.id.title.as_str()).unwrap_or(""),
|
||||
album
|
||||
.map(|a| a.id.date.year.to_string())
|
||||
.unwrap_or_default(),
|
||||
album.map(|a| a.date.year.to_string()).unwrap_or_default(),
|
||||
));
|
||||
|
||||
AlbumState {
|
||||
@ -325,7 +323,7 @@ impl<'a, 'b> TrackState<'a, 'b> {
|
||||
Title: {}\n\
|
||||
Artist: {}\n\
|
||||
Quality: {}",
|
||||
track.map(|t| t.id.number.to_string()).unwrap_or_default(),
|
||||
track.map(|t| t.number.0.to_string()).unwrap_or_default(),
|
||||
track.map(|t| t.id.title.as_str()).unwrap_or(""),
|
||||
track.map(|t| t.artist.join("; ")).unwrap_or_default(),
|
||||
track
|
||||
|
252
tests/testlib.rs
252
tests/testlib.rs
@ -2,9 +2,9 @@ use once_cell::sync::Lazy;
|
||||
use std::collections::HashMap;
|
||||
|
||||
use musichoard::collection::{
|
||||
album::{Album, AlbumDate, AlbumId, AlbumMonth},
|
||||
album::{Album, AlbumDate, AlbumId, AlbumMonth, AlbumSeq},
|
||||
artist::{Artist, ArtistId, MusicBrainz},
|
||||
track::{Track, TrackFormat, TrackId, TrackQuality},
|
||||
track::{Track, TrackFormat, TrackId, TrackNum, TrackQuality},
|
||||
Collection,
|
||||
};
|
||||
|
||||
@ -33,19 +33,20 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
]),
|
||||
albums: vec![Album {
|
||||
id: AlbumId {
|
||||
date: AlbumDate{
|
||||
year: 2011,
|
||||
month: AlbumMonth::None,
|
||||
day: 0,
|
||||
},
|
||||
title: String::from("Slovo"),
|
||||
},
|
||||
date: AlbumDate {
|
||||
year: 2011,
|
||||
month: AlbumMonth::None,
|
||||
day: 0,
|
||||
},
|
||||
seq: AlbumSeq(0),
|
||||
tracks: vec![
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 1,
|
||||
title: String::from("Az’"),
|
||||
},
|
||||
number: TrackNum(1),
|
||||
artist: vec![String::from("Аркона")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -54,9 +55,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 2,
|
||||
title: String::from("Arkaim"),
|
||||
},
|
||||
number: TrackNum(2),
|
||||
artist: vec![String::from("Аркона")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -65,9 +66,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 3,
|
||||
title: String::from("Bol’no mne"),
|
||||
},
|
||||
number: TrackNum(3),
|
||||
artist: vec![String::from("Аркона")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -76,9 +77,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 4,
|
||||
title: String::from("Leshiy"),
|
||||
},
|
||||
number: TrackNum(4),
|
||||
artist: vec![String::from("Аркона")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -87,9 +88,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 5,
|
||||
title: String::from("Zakliatie"),
|
||||
},
|
||||
number: TrackNum(5),
|
||||
artist: vec![String::from("Аркона")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -98,9 +99,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 6,
|
||||
title: String::from("Predok"),
|
||||
},
|
||||
number: TrackNum(6),
|
||||
artist: vec![String::from("Аркона")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -109,9 +110,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 7,
|
||||
title: String::from("Nikogda"),
|
||||
},
|
||||
number: TrackNum(7),
|
||||
artist: vec![String::from("Аркона")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -120,9 +121,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 8,
|
||||
title: String::from("Tam za tumanami"),
|
||||
},
|
||||
number: TrackNum(8),
|
||||
artist: vec![String::from("Аркона")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -131,9 +132,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 9,
|
||||
title: String::from("Potomok"),
|
||||
},
|
||||
number: TrackNum(9),
|
||||
artist: vec![String::from("Аркона")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -142,9 +143,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 10,
|
||||
title: String::from("Slovo"),
|
||||
},
|
||||
number: TrackNum(10),
|
||||
artist: vec![String::from("Аркона")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -153,9 +154,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 11,
|
||||
title: String::from("Odna"),
|
||||
},
|
||||
number: TrackNum(11),
|
||||
artist: vec![String::from("Аркона")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -164,9 +165,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 12,
|
||||
title: String::from("Vo moiom sadochke…"),
|
||||
},
|
||||
number: TrackNum(12),
|
||||
artist: vec![String::from("Аркона")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -175,9 +176,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 13,
|
||||
title: String::from("Stenka na stenku"),
|
||||
},
|
||||
number: TrackNum(13),
|
||||
artist: vec![String::from("Аркона")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -186,9 +187,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 14,
|
||||
title: String::from("Zimushka"),
|
||||
},
|
||||
number: TrackNum(14),
|
||||
artist: vec![String::from("Аркона")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -217,19 +218,20 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
albums: vec![
|
||||
Album {
|
||||
id: AlbumId {
|
||||
date: AlbumDate{
|
||||
year: 2004,
|
||||
month: AlbumMonth::None,
|
||||
day: 0,
|
||||
},
|
||||
title: String::from("Vên [re‐recorded]"),
|
||||
},
|
||||
date: AlbumDate {
|
||||
year: 2004,
|
||||
month: AlbumMonth::None,
|
||||
day: 0,
|
||||
},
|
||||
seq: AlbumSeq(0),
|
||||
tracks: vec![
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 1,
|
||||
title: String::from("Verja Urit an Bitus"),
|
||||
},
|
||||
number: TrackNum(1),
|
||||
artist: vec![String::from("Eluveitie")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -238,9 +240,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 2,
|
||||
title: String::from("Uis Elveti"),
|
||||
},
|
||||
number: TrackNum(2),
|
||||
artist: vec![String::from("Eluveitie")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -249,9 +251,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 3,
|
||||
title: String::from("Ôrô"),
|
||||
},
|
||||
number: TrackNum(3),
|
||||
artist: vec![String::from("Eluveitie")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -260,9 +262,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 4,
|
||||
title: String::from("Lament"),
|
||||
},
|
||||
number: TrackNum(4),
|
||||
artist: vec![String::from("Eluveitie")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -271,9 +273,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 5,
|
||||
title: String::from("Druid"),
|
||||
},
|
||||
number: TrackNum(5),
|
||||
artist: vec![String::from("Eluveitie")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -282,9 +284,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 6,
|
||||
title: String::from("Jêzaïg"),
|
||||
},
|
||||
number: TrackNum(6),
|
||||
artist: vec![String::from("Eluveitie")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -295,19 +297,20 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Album {
|
||||
id: AlbumId {
|
||||
date: AlbumDate{
|
||||
year: 2008,
|
||||
month: AlbumMonth::None,
|
||||
day: 0,
|
||||
},
|
||||
title: String::from("Slania"),
|
||||
},
|
||||
date: AlbumDate {
|
||||
year: 2008,
|
||||
month: AlbumMonth::None,
|
||||
day: 0,
|
||||
},
|
||||
seq: AlbumSeq(0),
|
||||
tracks: vec![
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 1,
|
||||
title: String::from("Samon"),
|
||||
},
|
||||
number: TrackNum(1),
|
||||
artist: vec![String::from("Eluveitie")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -316,9 +319,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 2,
|
||||
title: String::from("Primordial Breath"),
|
||||
},
|
||||
number: TrackNum(2),
|
||||
artist: vec![String::from("Eluveitie")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -327,9 +330,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 3,
|
||||
title: String::from("Inis Mona"),
|
||||
},
|
||||
number: TrackNum(3),
|
||||
artist: vec![String::from("Eluveitie")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -338,9 +341,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 4,
|
||||
title: String::from("Gray Sublime Archon"),
|
||||
},
|
||||
number: TrackNum(4),
|
||||
artist: vec![String::from("Eluveitie")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -349,9 +352,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 5,
|
||||
title: String::from("Anagantios"),
|
||||
},
|
||||
number: TrackNum(5),
|
||||
artist: vec![String::from("Eluveitie")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -360,9 +363,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 6,
|
||||
title: String::from("Bloodstained Ground"),
|
||||
},
|
||||
number: TrackNum(6),
|
||||
artist: vec![String::from("Eluveitie")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -371,9 +374,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 7,
|
||||
title: String::from("The Somber Lay"),
|
||||
},
|
||||
number: TrackNum(7),
|
||||
artist: vec![String::from("Eluveitie")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -382,9 +385,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 8,
|
||||
title: String::from("Slanias Song"),
|
||||
},
|
||||
number: TrackNum(8),
|
||||
artist: vec![String::from("Eluveitie")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -393,9 +396,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 9,
|
||||
title: String::from("Giamonios"),
|
||||
},
|
||||
number: TrackNum(9),
|
||||
artist: vec![String::from("Eluveitie")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -404,9 +407,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 10,
|
||||
title: String::from("Tarvos"),
|
||||
},
|
||||
number: TrackNum(10),
|
||||
artist: vec![String::from("Eluveitie")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -415,9 +418,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 11,
|
||||
title: String::from("Calling the Rain"),
|
||||
},
|
||||
number: TrackNum(11),
|
||||
artist: vec![String::from("Eluveitie")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -426,9 +429,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 12,
|
||||
title: String::from("Elembivos"),
|
||||
},
|
||||
number: TrackNum(12),
|
||||
artist: vec![String::from("Eluveitie")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -457,19 +460,20 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
]),
|
||||
albums: vec![Album {
|
||||
id: AlbumId {
|
||||
date: AlbumDate{
|
||||
year: 2001,
|
||||
month: AlbumMonth::None,
|
||||
day: 0,
|
||||
},
|
||||
title: String::from("…nasze jest królestwo, potęga i chwała na wieki…"),
|
||||
},
|
||||
date: AlbumDate {
|
||||
year: 2001,
|
||||
month: AlbumMonth::None,
|
||||
day: 0,
|
||||
},
|
||||
seq: AlbumSeq(0),
|
||||
tracks: vec![
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 1,
|
||||
title: String::from("Intro = Chaos"),
|
||||
},
|
||||
number: TrackNum(1),
|
||||
artist: vec![String::from("Frontside")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -478,9 +482,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 2,
|
||||
title: String::from("Modlitwa"),
|
||||
},
|
||||
number: TrackNum(2),
|
||||
artist: vec![String::from("Frontside")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -489,9 +493,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 3,
|
||||
title: String::from("Długa droga z piekła"),
|
||||
},
|
||||
number: TrackNum(3),
|
||||
artist: vec![String::from("Frontside")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -500,9 +504,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 4,
|
||||
title: String::from("Synowie ognia"),
|
||||
},
|
||||
number: TrackNum(4),
|
||||
artist: vec![String::from("Frontside")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -511,9 +515,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 5,
|
||||
title: String::from("1902"),
|
||||
},
|
||||
number: TrackNum(5),
|
||||
artist: vec![String::from("Frontside")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -522,9 +526,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 6,
|
||||
title: String::from("Krew za krew"),
|
||||
},
|
||||
number: TrackNum(6),
|
||||
artist: vec![String::from("Frontside")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -533,9 +537,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 7,
|
||||
title: String::from("Kulminacja"),
|
||||
},
|
||||
number: TrackNum(7),
|
||||
artist: vec![String::from("Frontside")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -544,9 +548,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 8,
|
||||
title: String::from("Judasz"),
|
||||
},
|
||||
number: TrackNum(8),
|
||||
artist: vec![String::from("Frontside")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -555,9 +559,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 9,
|
||||
title: String::from("Więzy"),
|
||||
},
|
||||
number: TrackNum(9),
|
||||
artist: vec![String::from("Frontside")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -566,9 +570,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 10,
|
||||
title: String::from("Zagubione dusze"),
|
||||
},
|
||||
number: TrackNum(10),
|
||||
artist: vec![String::from("Frontside")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -577,9 +581,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 11,
|
||||
title: String::from("Linia życia"),
|
||||
},
|
||||
number: TrackNum(11),
|
||||
artist: vec![String::from("Frontside")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -609,19 +613,20 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
]),
|
||||
albums: vec![Album {
|
||||
id: AlbumId {
|
||||
date: AlbumDate{
|
||||
year: 2011,
|
||||
month: AlbumMonth::None,
|
||||
day: 0,
|
||||
},
|
||||
title: String::from("Paper Plague"),
|
||||
},
|
||||
date: AlbumDate {
|
||||
year: 2011,
|
||||
month: AlbumMonth::None,
|
||||
day: 0,
|
||||
},
|
||||
seq: AlbumSeq(0),
|
||||
tracks: vec![
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 0,
|
||||
title: String::from("Paper Plague"),
|
||||
},
|
||||
number: TrackNum(0),
|
||||
artist: vec![String::from("Heaven’s Basement")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Mp3,
|
||||
@ -631,19 +636,20 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
],
|
||||
}, Album {
|
||||
id: AlbumId {
|
||||
date: AlbumDate{
|
||||
year: 2011,
|
||||
month: AlbumMonth::None,
|
||||
day: 0,
|
||||
},
|
||||
title: String::from("Unbreakable"),
|
||||
},
|
||||
date: AlbumDate {
|
||||
year: 2011,
|
||||
month: AlbumMonth::None,
|
||||
day: 0,
|
||||
},
|
||||
seq: AlbumSeq(0),
|
||||
tracks: vec![
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 1,
|
||||
title: String::from("Unbreakable"),
|
||||
},
|
||||
number: TrackNum(1),
|
||||
artist: vec![String::from("Heaven’s Basement")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Mp3,
|
||||
@ -652,9 +658,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 2,
|
||||
title: String::from("Guilt Trips and Sins"),
|
||||
},
|
||||
number: TrackNum(2),
|
||||
artist: vec![String::from("Heaven’s Basement")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Mp3,
|
||||
@ -663,9 +669,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 3,
|
||||
title: String::from("The Long Goodbye"),
|
||||
},
|
||||
number: TrackNum(3),
|
||||
artist: vec![String::from("Heaven’s Basement")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Mp3,
|
||||
@ -674,9 +680,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 4,
|
||||
title: String::from("Close Encounters"),
|
||||
},
|
||||
number: TrackNum(4),
|
||||
artist: vec![String::from("Heaven’s Basement")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Mp3,
|
||||
@ -685,9 +691,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 5,
|
||||
title: String::from("Paranoia"),
|
||||
},
|
||||
number: TrackNum(5),
|
||||
artist: vec![String::from("Heaven’s Basement")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Mp3,
|
||||
@ -696,9 +702,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 6,
|
||||
title: String::from("Let Me Out of Here"),
|
||||
},
|
||||
number: TrackNum(6),
|
||||
artist: vec![String::from("Heaven’s Basement")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Mp3,
|
||||
@ -707,9 +713,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 7,
|
||||
title: String::from("Leeches"),
|
||||
},
|
||||
number: TrackNum(7),
|
||||
artist: vec![String::from("Heaven’s Basement")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Mp3,
|
||||
@ -738,19 +744,20 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
albums: vec![
|
||||
Album {
|
||||
id: AlbumId {
|
||||
date: AlbumDate{
|
||||
year: 1984,
|
||||
month: AlbumMonth::None,
|
||||
day: 0,
|
||||
},
|
||||
title: String::from("Ride the Lightning"),
|
||||
},
|
||||
date: AlbumDate {
|
||||
year: 1984,
|
||||
month: AlbumMonth::None,
|
||||
day: 0,
|
||||
},
|
||||
seq: AlbumSeq(0),
|
||||
tracks: vec![
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 1,
|
||||
title: String::from("Fight Fire with Fire"),
|
||||
},
|
||||
number: TrackNum(1),
|
||||
artist: vec![String::from("Metallica")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -759,9 +766,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 2,
|
||||
title: String::from("Ride the Lightning"),
|
||||
},
|
||||
number: TrackNum(2),
|
||||
artist: vec![String::from("Metallica")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -770,9 +777,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 3,
|
||||
title: String::from("For Whom the Bell Tolls"),
|
||||
},
|
||||
number: TrackNum(3),
|
||||
artist: vec![String::from("Metallica")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -781,9 +788,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 4,
|
||||
title: String::from("Fade to Black"),
|
||||
},
|
||||
number: TrackNum(4),
|
||||
artist: vec![String::from("Metallica")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -792,9 +799,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 5,
|
||||
title: String::from("Trapped under Ice"),
|
||||
},
|
||||
number: TrackNum(5),
|
||||
artist: vec![String::from("Metallica")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -803,9 +810,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 6,
|
||||
title: String::from("Escape"),
|
||||
},
|
||||
number: TrackNum(6),
|
||||
artist: vec![String::from("Metallica")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -814,9 +821,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 7,
|
||||
title: String::from("Creeping Death"),
|
||||
},
|
||||
number: TrackNum(7),
|
||||
artist: vec![String::from("Metallica")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -825,9 +832,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 8,
|
||||
title: String::from("The Call of Ktulu"),
|
||||
},
|
||||
number: TrackNum(8),
|
||||
artist: vec![String::from("Metallica")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -838,19 +845,20 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Album {
|
||||
id: AlbumId {
|
||||
date: AlbumDate{
|
||||
year: 1999,
|
||||
month: AlbumMonth::None,
|
||||
day: 0,
|
||||
},
|
||||
title: String::from("S&M"),
|
||||
},
|
||||
date: AlbumDate {
|
||||
year: 1999,
|
||||
month: AlbumMonth::None,
|
||||
day: 0,
|
||||
},
|
||||
seq: AlbumSeq(0),
|
||||
tracks: vec![
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 1,
|
||||
title: String::from("The Ecstasy of Gold"),
|
||||
},
|
||||
number: TrackNum(1),
|
||||
artist: vec![String::from("Metallica")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -859,9 +867,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 2,
|
||||
title: String::from("The Call of Ktulu"),
|
||||
},
|
||||
number: TrackNum(2),
|
||||
artist: vec![String::from("Metallica")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -870,9 +878,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 3,
|
||||
title: String::from("Master of Puppets"),
|
||||
},
|
||||
number: TrackNum(3),
|
||||
artist: vec![String::from("Metallica")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -881,9 +889,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 4,
|
||||
title: String::from("Of Wolf and Man"),
|
||||
},
|
||||
number: TrackNum(4),
|
||||
artist: vec![String::from("Metallica")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -892,9 +900,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 5,
|
||||
title: String::from("The Thing That Should Not Be"),
|
||||
},
|
||||
number: TrackNum(5),
|
||||
artist: vec![String::from("Metallica")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -903,9 +911,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 6,
|
||||
title: String::from("Fuel"),
|
||||
},
|
||||
number: TrackNum(6),
|
||||
artist: vec![String::from("Metallica")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -914,9 +922,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 7,
|
||||
title: String::from("The Memory Remains"),
|
||||
},
|
||||
number: TrackNum(7),
|
||||
artist: vec![String::from("Metallica")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -925,9 +933,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 8,
|
||||
title: String::from("No Leaf Clover"),
|
||||
},
|
||||
number: TrackNum(8),
|
||||
artist: vec![String::from("Metallica")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -936,9 +944,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 9,
|
||||
title: String::from("Hero of the Day"),
|
||||
},
|
||||
number: TrackNum(9),
|
||||
artist: vec![String::from("Metallica")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -947,9 +955,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 10,
|
||||
title: String::from("Devil’s Dance"),
|
||||
},
|
||||
number: TrackNum(10),
|
||||
artist: vec![String::from("Metallica")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -958,9 +966,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 11,
|
||||
title: String::from("Bleeding Me"),
|
||||
},
|
||||
number: TrackNum(11),
|
||||
artist: vec![String::from("Metallica")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -969,9 +977,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 12,
|
||||
title: String::from("Nothing Else Matters"),
|
||||
},
|
||||
number: TrackNum(12),
|
||||
artist: vec![String::from("Metallica")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -980,9 +988,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 13,
|
||||
title: String::from("Until It Sleeps"),
|
||||
},
|
||||
number: TrackNum(13),
|
||||
artist: vec![String::from("Metallica")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -991,9 +999,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 14,
|
||||
title: String::from("For Whom the Bell Tolls"),
|
||||
},
|
||||
number: TrackNum(14),
|
||||
artist: vec![String::from("Metallica")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -1002,9 +1010,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 15,
|
||||
title: String::from("−Human"),
|
||||
},
|
||||
number: TrackNum(15),
|
||||
artist: vec![String::from("Metallica")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -1013,9 +1021,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 16,
|
||||
title: String::from("Wherever I May Roam"),
|
||||
},
|
||||
number: TrackNum(16),
|
||||
artist: vec![String::from("Metallica")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -1024,9 +1032,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 17,
|
||||
title: String::from("Outlaw Torn"),
|
||||
},
|
||||
number: TrackNum(17),
|
||||
artist: vec![String::from("Metallica")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -1035,9 +1043,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 18,
|
||||
title: String::from("Sad but True"),
|
||||
},
|
||||
number: TrackNum(18),
|
||||
artist: vec![String::from("Metallica")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -1046,9 +1054,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 19,
|
||||
title: String::from("One"),
|
||||
},
|
||||
number: TrackNum(19),
|
||||
artist: vec![String::from("Metallica")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -1057,9 +1065,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 20,
|
||||
title: String::from("Enter Sandman"),
|
||||
},
|
||||
number: TrackNum(20),
|
||||
artist: vec![String::from("Metallica")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
@ -1068,9 +1076,9 @@ pub static COLLECTION: Lazy<Vec<Artist>> = Lazy::new(|| -> Collection {
|
||||
},
|
||||
Track {
|
||||
id: TrackId {
|
||||
number: 21,
|
||||
title: String::from("Battery"),
|
||||
},
|
||||
number: TrackNum(21),
|
||||
artist: vec![String::from("Metallica")],
|
||||
quality: TrackQuality {
|
||||
format: TrackFormat::Flac,
|
||||
|
Loading…
Reference in New Issue
Block a user