game_manager_lib\commands/
version.rs1use crate::database;
6use crate::database::AppState;
7use crate::errors::AppError;
8use serde::Serialize;
9use tauri::{AppHandle, Manager, State};
10
11#[derive(Serialize)]
13pub struct AppSystemInfo {
14 pub current_version: String,
15 pub previous_version: Option<String>,
16 pub schema_version: String,
17 pub os_platform: Option<String>,
18 pub install_date: Option<String>,
19 pub last_updated: Option<String>,
20 pub last_backup_at: Option<String>,
21 pub last_auto_backup_at: Option<String>,
22}
23
24#[tauri::command]
26pub fn get_app_version(app: AppHandle) -> String {
27 app.package_info().version.to_string()
28}
29
30#[tauri::command]
32pub fn get_app_version_info(app: AppHandle) -> Result<AppSystemInfo, AppError> {
33 let current_version = app.package_info().version.to_string();
34 let previous_version = database::configs::get_stored_app_version(&app)?;
35 let schema_version = database::configs::get_stored_schema_version(&app)?;
36
37 let state: State<AppState> = app.state();
38 let conn = state.metadata_db.lock().map_err(|_| AppError::MutexError)?;
39
40 let install_date = database::configs::get_config(&conn, "install_date")?;
42 let last_updated = database::configs::get_config(&conn, "last_updated_at")?;
43 let last_backup_at = database::configs::get_config(&conn, "last_backup_at")?;
44 let last_auto_backup_at = database::configs::get_config(&conn, "last_auto_backup_at")?;
45 let os_platform = database::configs::get_config(&conn, "os_platform")?;
46
47 let previous = if previous_version == "0.0.0" {
48 None
49 } else {
50 Some(previous_version)
51 };
52
53 Ok(AppSystemInfo {
54 current_version,
55 previous_version: previous,
56 schema_version: schema_version.to_string(),
57 os_platform,
58 install_date,
59 last_updated,
60 last_backup_at,
61 last_auto_backup_at,
62 })
63}