diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 8f8888c..a95f43c 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -3118,13 +3118,13 @@ dependencies = [ [[package]] name = "native_model" -version = "0.6.4" -source = "git+https://github.com/Drop-OSS/native_model.git#a91b422cbd53116df1f20b2459fb3d8257458bfd" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7050d759e3da6673361dddda4f4a743492279dd2c6484a21fbee0a8278620df0" dependencies = [ "anyhow", "bincode", "doc-comment", - "log", "native_model_macro", "rmp-serde", "serde", @@ -3134,10 +3134,10 @@ dependencies = [ [[package]] name = "native_model_macro" -version = "0.6.4" -source = "git+https://github.com/Drop-OSS/native_model.git#a91b422cbd53116df1f20b2459fb3d8257458bfd" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1577a0bebf5ed1754e240baf5d9b1845f51e598b20600aa894f55e11cd20cc6c" dependencies = [ - "log", "proc-macro2", "quote", "syn 2.0.101", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index b4cec7b..f999d73 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -65,7 +65,7 @@ whoami = "1.6.0" filetime = "0.2.25" walkdir = "2.5.0" known-folders = "1.2.0" -native_model = { version = "0.6.4", features = ["rmp_serde_1_3"], git = "https://github.com/Drop-OSS/native_model.git"} +native_model = { version = "0.6.1", features = ["rmp_serde_1_3"] } tauri-plugin-opener = "2.4.0" bitcode = "0.6.6" reqwest-websocket = "0.5.0" diff --git a/src-tauri/src/database/db.rs b/src-tauri/src/database/db.rs index 3e8bc05..bc08f7a 100644 --- a/src-tauri/src/database/db.rs +++ b/src-tauri/src/database/db.rs @@ -8,6 +8,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::{Serialize, de::DeserializeOwned}; use url::Url; @@ -27,7 +28,7 @@ impl DeSerializer for DropDatabaseSerializer { fn serialize(&self, val: &T) -> rustbreak::error::DeSerResult> { - native_model::encode(val) + native_model::rmp_serde_1_3::RmpSerde::encode(val) .map_err(|e| DeSerError::Internal(e.to_string())) } @@ -35,7 +36,7 @@ impl DeSerializer 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) + 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 1177f4e..a2997b2 100644 --- a/src-tauri/src/database/models.rs +++ b/src-tauri/src/database/models.rs @@ -1,5 +1,10 @@ - - +/** + * NEXT BREAKING CHANGE + * + * UPDATE DATABASE TO USE RPMSERDENAMED + * + * WE CAN'T DELETE ANY FIELDS + */ pub mod data { use std::path::PathBuf; @@ -7,9 +12,6 @@ pub mod data { use native_model::native_model; use serde::{Deserialize, Serialize}; - // NOTE: Within each version, you should NEVER use these types. - // Declare it using the actual version that it is from, i.e. v1::Settings rather than just Settings from here - pub type GameVersion = v1::GameVersion; pub type Database = v3::Database; pub type Settings = v1::Settings; @@ -20,7 +22,7 @@ pub mod data { pub type DownloadableMetadata = v1::DownloadableMetadata; pub type DownloadType = v1::DownloadType; pub type DatabaseApplications = v2::DatabaseApplications; - // pub type DatabaseCompatInfo = v2::DatabaseCompatInfo; + pub type DatabaseCompatInfo = v2::DatabaseCompatInfo; use std::collections::HashMap; @@ -178,15 +180,16 @@ pub mod data { use serde_with::serde_as; use super::{ - Deserialize, Serialize, native_model, v1, + ApplicationTransientStatus, DatabaseAuth, Deserialize, DownloadableMetadata, + GameVersion, Serialize, Settings, native_model, v1, }; - #[native_model(id = 1, version = 2, with = native_model::rmp_serde_1_3::RmpSerde, from = v1::Database)] + #[native_model(id = 1, version = 2, with = native_model::rmp_serde_1_3::RmpSerde)] #[derive(Serialize, Deserialize, Clone, Default)] pub struct Database { #[serde(default)] - pub settings: v1::Settings, - pub auth: Option, + pub settings: Settings, + pub auth: Option, pub base_url: String, pub applications: v1::DatabaseApplications, #[serde(skip)] @@ -195,7 +198,7 @@ pub mod data { pub compat_info: Option, } - #[native_model(id = 9, version = 1, with = native_model::rmp_serde_1_3::RmpSerde)] + #[native_model(id = 8, version = 2, with = native_model::rmp_serde_1_3::RmpSerde)] #[derive(Serialize, Deserialize, Clone, Default)] pub struct DatabaseCompatInfo { @@ -218,7 +221,7 @@ pub mod data { // Strings are version names for a particular game #[derive(Serialize, Clone, Deserialize, Debug)] #[serde(tag = "type")] - #[native_model(id = 5, version = 2, with = native_model::rmp_serde_1_3::RmpSerde, from = v1::GameDownloadStatus)] + #[native_model(id = 5, version = 2, with = native_model::rmp_serde_1_3::RmpSerde)] pub enum GameDownloadStatus { Remote {}, SetupRequired { @@ -258,17 +261,17 @@ pub mod data { #[serde_as] #[derive(Serialize, Clone, Deserialize, Default)] #[serde(rename_all = "camelCase")] - #[native_model(id = 3, version = 2, with = native_model::rmp_serde_1_3::RmpSerde, from=v1::DatabaseApplications)] + #[native_model(id = 3, version = 2, with = native_model::rmp_serde_1_3::RmpSerde)] pub struct DatabaseApplications { pub install_dirs: Vec, // Guaranteed to exist if the game also exists in the app state map pub game_statuses: HashMap, - pub game_versions: HashMap>, - pub installed_game_version: HashMap, + pub game_versions: HashMap>, + pub installed_game_version: HashMap, #[serde(skip)] - pub transient_statuses: HashMap, + pub transient_statuses: HashMap, } impl From for DatabaseApplications { fn from(value: v1::DatabaseApplications) -> Self { @@ -290,21 +293,21 @@ pub mod data { use std::path::PathBuf; use super::{ - Deserialize, Serialize, - native_model, v2, v1, + DatabaseApplications, DatabaseAuth, DatabaseCompatInfo, Deserialize, Serialize, + Settings, native_model, v2, }; - #[native_model(id = 1, version = 3, with = native_model::rmp_serde_1_3::RmpSerde, from = v2::Database)] + #[native_model(id = 1, version = 3, with = native_model::rmp_serde_1_3::RmpSerde)] #[derive(Serialize, Deserialize, Clone, Default)] pub struct Database { #[serde(default)] - pub settings: v1::Settings, - pub auth: Option, + pub settings: Settings, + pub auth: Option, pub base_url: String, - pub applications: v2::DatabaseApplications, + pub applications: DatabaseApplications, #[serde(skip)] pub prev_database: Option, pub cache_dir: PathBuf, - pub compat_info: Option, + pub compat_info: Option, } impl From for Database { @@ -344,6 +347,5 @@ pub mod data { compat_info: None, } } - } }