game_manager_lib\commands/
version.rs

1//! Comandos relacionados a versionamento da aplicação
2//!
3//! Fornece informações sobre versões atual e anterior do app
4
5use crate::database;
6use crate::database::AppState;
7use crate::errors::AppError;
8use serde::Serialize;
9use tauri::{AppHandle, Manager, State};
10
11/// Estrutura que contém informações sobre a versão do aplicativo e do sistema.
12#[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/// Retorna apenas a versão atual do aplicativo.
25#[tauri::command]
26pub fn get_app_version(app: AppHandle) -> String {
27    app.package_info().version.to_string()
28}
29
30/// Retorna informações sobre a versão atual e anterior do aplicativo e outras infos do sistema.
31#[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    // Busca configurações genéricas
41    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}