From 924e4e334c980d2dd8deaedf35b18f785b872530 Mon Sep 17 00:00:00 2001 From: quexeky <116044207+quexeky@users.noreply.github.com> Date: Thu, 5 Jun 2025 17:22:22 +1000 Subject: [PATCH] Database not being properly serialised with rpm_serde (#48) Signed-off-by: quexeky --- src-tauri/src/database/db.rs | 7 ++++--- src-tauri/src/database/models.rs | 14 +++++++------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src-tauri/src/database/db.rs b/src-tauri/src/database/db.rs index 3b54c69..3b72e36 100644 --- a/src-tauri/src/database/db.rs +++ b/src-tauri/src/database/db.rs @@ -6,6 +6,7 @@ use std::{ use chrono::Utc; use log::{debug, error, info, warn}; +use native_model::{Decode, Encode}; use rustbreak::{DeSerError, DeSerializer, PathDatabase, RustbreakError}; use serde::{de::DeserializeOwned, Serialize}; use url::Url; @@ -26,15 +27,15 @@ impl DeSerializer for DropDatabaseSerializer { fn serialize(&self, val: &T) -> rustbreak::error::DeSerResult> { - native_model::encode(val).map_err(|e| DeSerError::Internal(e.to_string())) + native_model::rmp_serde_1_3::RmpSerde::encode(val).map_err(|e| DeSerError::Internal(e.to_string())) } fn deserialize(&self, mut s: R) -> rustbreak::error::DeSerResult { let mut buf = Vec::new(); s.read_to_end(&mut buf) .map_err(|e| rustbreak::error::DeSerError::Other(e.into()))?; - let (val, _version) = - native_model::decode::(buf).map_err(|e| DeSerError::Internal(e.to_string()))?; + let val = + native_model::rmp_serde_1_3::RmpSerde::decode(buf).map_err(|e| DeSerError::Internal(e.to_string()))?; Ok(val) } } diff --git a/src-tauri/src/database/models.rs b/src-tauri/src/database/models.rs index 273e25d..45a7f51 100644 --- a/src-tauri/src/database/models.rs +++ b/src-tauri/src/database/models.rs @@ -27,7 +27,7 @@ pub mod data { #[derive(Serialize, Deserialize, Clone, Debug)] #[serde(rename_all = "camelCase")] - #[native_model(id = 2, version = 1)] + #[native_model(id = 2, version = 1, with = native_model::rmp_serde_1_3::RmpSerde)] pub struct GameVersion { pub game_id: String, pub version_name: String, @@ -69,7 +69,7 @@ pub mod data { #[derive(Serialize, Deserialize, Clone, Debug)] #[serde(rename_all = "camelCase")] - #[native_model(id = 4, version = 1)] + #[native_model(id = 4, version = 1, with = native_model::rmp_serde_1_3::RmpSerde)] pub struct Settings { pub autostart: bool, pub max_download_threads: usize, @@ -88,7 +88,7 @@ pub mod data { // Strings are version names for a particular game #[derive(Serialize, Clone, Deserialize)] #[serde(tag = "type")] - #[native_model(id = 5, version = 1)] + #[native_model(id = 5, version = 1, with = native_model::rmp_serde_1_3::RmpSerde)] pub enum GameDownloadStatus { Remote {}, SetupRequired { @@ -111,7 +111,7 @@ pub mod data { } #[derive(serde::Serialize, Clone, Deserialize)] - #[native_model(id = 6, version = 1)] + #[native_model(id = 6, version = 1, with = native_model::rmp_serde_1_3::RmpSerde)] pub struct DatabaseAuth { pub private: String, pub cert: String, @@ -130,7 +130,7 @@ pub mod data { Mod, } - #[native_model(id = 7, version = 1)] + #[native_model(id = 7, version = 1, with = native_model::rmp_serde_1_3::RmpSerde)] #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize, Clone)] #[serde(rename_all = "camelCase")] pub struct DownloadableMetadata { @@ -168,7 +168,7 @@ pub mod data { use super::*; - #[native_model(id = 1, version = 2)] + #[native_model(id = 1, version = 2, with = native_model::rmp_serde_1_3::RmpSerde)] #[derive(Serialize, Deserialize, Clone, Default)] pub struct Database { #[serde(default)] @@ -182,7 +182,7 @@ pub mod data { pub compat_info: Option, } - #[native_model(id = 8, version = 2)] + #[native_model(id = 8, version = 2, with = native_model::rmp_serde_1_3::RmpSerde)] #[derive(Serialize, Deserialize, Clone, Default)] pub struct DatabaseCompatInfo {