diff --git a/outdb b/outdb index 98c84f9..25d931c 100644 Binary files a/outdb and b/outdb differ diff --git a/src/main.rs b/src/main.rs index 1c4b790..27cd901 100644 --- a/src/main.rs +++ b/src/main.rs @@ -33,6 +33,20 @@ fn main() { let unique_id = rand::thread_rng().gen_range(10..999); if let XSomeList::TrackList(tracks) = &mut xdb.find_dataset(1).child { + let mut item = (*tracks.last().unwrap()).clone(); + let mut xargs = Vec::new(); + xargs.push(XArgument { arg_type: 1, val: String::from("They beat you") }); + xargs.push(XArgument { arg_type: 6, val: String::from("MPEG audio file")}); + xargs.push(XArgument { arg_type: 2, val: String::from(":iPod_Control:Music:F38:ZXXX.mp3") }); + item.args = xargs; + item.data.number_of_strings = 3; + item.data.unique_id = unique_id; + item.data.dbid = rand::thread_rng().gen_range(10000..100000); + item.data.dbid2 = item.data.dbid; + xdb.add_track(item); + } + + /*if let XSomeList::TrackList(tracks) = &mut xdb.find_dataset(1).child { let mut item = (*tracks.last().unwrap()).clone(); let mut xargs = Vec::new(); xargs.push(XArgument { arg_type: 1, val: String::from("They beat you") }); @@ -75,7 +89,7 @@ fn main() { } playlist.elems.push((pl_item, args)); - } + }*/ let mut op = File::create("outdb").unwrap(); info!("Write res: {:?}", op.write(&serializer::to_bytes(xdb))); diff --git a/src/xobjects.rs b/src/xobjects.rs index 9169549..e345c13 100644 --- a/src/xobjects.rs +++ b/src/xobjects.rs @@ -77,6 +77,24 @@ impl XDatabase { self.children.iter_mut().find(|d| d.data.data_type == data_type).unwrap() } + pub fn remove_track(&mut self, unique_id: u32) { + if let XSomeList::TrackList(tracks) = &mut self.find_dataset(1).child { + tracks.retain_mut(|t| t.data.unique_id != unique_id); + } + + if let XSomeList::Playlists(playlists) = &mut self.find_dataset(2).child { + for playlist in playlists.iter_mut() { + playlist.elems.retain_mut(|t| t.0.track_id != unique_id); + } + } + + if let XSomeList::Playlists(playlists) = &mut self.find_dataset(3).child { + for playlist in playlists.iter_mut() { + playlist.elems.retain_mut(|t| t.0.track_id != unique_id); + } + } + } + pub fn add_track(&mut self, track: XTrackItem) { self.add_track_to_playlists(2, &track); self.add_track_to_playlists(3, &track);