Add version check system
This commit is contained in:
@ -4,6 +4,7 @@ pub use game_map::*;
|
||||
pub use game_rules::*;
|
||||
pub use play_config::*;
|
||||
pub use printable_map::*;
|
||||
pub use version::*;
|
||||
|
||||
mod boats_layout;
|
||||
mod current_game_status;
|
||||
@ -11,3 +12,4 @@ mod game_map;
|
||||
mod game_rules;
|
||||
mod play_config;
|
||||
mod printable_map;
|
||||
mod version;
|
||||
|
32
rust/sea_battle_backend/src/data/version.rs
Normal file
32
rust/sea_battle_backend/src/data/version.rs
Normal file
@ -0,0 +1,32 @@
|
||||
//! # Version Info
|
||||
//!
|
||||
//! Contains server version requirements information
|
||||
|
||||
use crate::consts;
|
||||
use crate::utils::res_utils::Res;
|
||||
use semver::Version;
|
||||
|
||||
#[derive(serde::Serialize, serde::Deserialize)]
|
||||
pub struct VersionInfo {
|
||||
current: String,
|
||||
min_required: String,
|
||||
}
|
||||
|
||||
impl VersionInfo {
|
||||
pub fn load_static() -> Self {
|
||||
Self {
|
||||
current: consts::CURRENT_VERSION.to_string(),
|
||||
min_required: consts::MIN_REQUIRED_VERSION.to_string(),
|
||||
}
|
||||
}
|
||||
|
||||
/// Check if builtin version is compatible with a remote version or not
|
||||
pub fn is_compatible_with_static_version(&self) -> Res<bool> {
|
||||
let static_version = Self::load_static();
|
||||
|
||||
let local_current = Version::parse(&static_version.current)?;
|
||||
let min_required = Version::parse(&self.min_required)?;
|
||||
|
||||
Ok(min_required <= local_current)
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user