From 9080205a7ba46c80fcd9fc19d44fde858ec8ba2f Mon Sep 17 00:00:00 2001
From: MrDulfin <dulfinaminator@gmail.com>
Date: Tue, 3 Dec 2024 23:37:28 -0500
Subject: [PATCH] Updated library serialization to cbor with ciborium

---
 Cargo.toml                 |  3 +--
 src/music_storage/utils.rs | 25 +++++++------------------
 2 files changed, 8 insertions(+), 20 deletions(-)

diff --git a/Cargo.toml b/Cargo.toml
index 3b0a6d9..8945da1 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -25,11 +25,9 @@ lofty = "0.18.2"
 serde = { version = "1.0.195", features = ["derive"] }
 walkdir = "2.4.0"
 chrono = { version = "0.4.31", features = ["serde"] }
-bincode = { version = "2.0.0-rc.3", features = ["serde"] }
 rayon = "1.8.0"
 log = "0.4"
 base64 = "0.21.5"
-snap = "1"
 rcue = "0.1.3"
 gstreamer = "0.21.3"
 glib = "0.18.5"
@@ -55,3 +53,4 @@ futures = "0.3.30"
 text_io = "0.1.12"
 tokio = { version = "1.40.0", features = ["macros", "rt"] }
 async-channel = "2.3.1"
+ciborium = "0.2.2"
diff --git a/src/music_storage/utils.rs b/src/music_storage/utils.rs
index b1171da..991d3d7 100644
--- a/src/music_storage/utils.rs
+++ b/src/music_storage/utils.rs
@@ -1,6 +1,6 @@
+use ciborium::{from_reader, into_writer};
 use deunicode::deunicode_with_tofu;
 use file_format::{FileFormat, Kind};
-use snap;
 use std::error::Error;
 use std::fs::{self, File};
 use std::io::{BufReader, BufWriter};
@@ -24,7 +24,7 @@ pub(super) fn normalize(input_string: &str) -> String {
 }
 
 /// Write any data structure which implements [serde::Serialize]
-/// out to a [bincode] encoded file compressed using [snap]
+/// out to a [cbor] encoded file compressed using [ciborium]
 pub(super) fn write_file<
     T: serde::Serialize,
     U: std::convert::AsRef<Path> + std::convert::AsRef<std::ffi::OsStr> + Clone,
@@ -37,17 +37,11 @@ pub(super) fn write_file<
     writer_name.set_extension("tmp");
 
     // Create a new BufWriter on the file and a snap frame encoder
-    let mut writer = BufWriter::new(File::create(&writer_name)?);
+    let writer = BufWriter::new(File::create(&writer_name)?);
     //let mut e = snap::write::FrameEncoder::new(writer);
 
     // Write out the data
-    bincode::serde::encode_into_std_write(
-        library,
-        &mut writer,
-        bincode::config::standard()
-            .with_little_endian()
-            .with_variable_int_encoding(),
-    )?;
+    into_writer(&library, writer)?;
     fs::rename(writer_name, &path)?;
 
     Ok(())
@@ -59,16 +53,11 @@ pub(super) fn read_file<T: for<'de> serde::Deserialize<'de>>(
     path: PathBuf,
 ) -> Result<T, Box<dyn Error>> {
     // Create a new snap reader over the file
-    let mut file_reader = BufReader::new(File::open(path)?);
+    let file_reader = BufReader::new(File::open(path)?);
     //let mut d = snap::read::FrameDecoder::new(file_reader);
 
     // Decode the library from the serialized data into the vec
-    let library: T = bincode::serde::decode_from_std_read(
-        &mut file_reader,
-        bincode::config::standard()
-            .with_little_endian()
-            .with_variable_int_encoding(),
-    )?;
+    let library: T = from_reader(file_reader)?;
 
     Ok(library)
 }
@@ -105,4 +94,4 @@ pub fn find_images(song_path: &Path) -> Result<Vec<AlbumArt>, Box<dyn Error>> {
     }
 
     Ok(images)
-}
+}
\ No newline at end of file