Skip to main content

game_manager_lib/database/backup/
models.rs

1//! Modelos usados no backup
2
3use crate::models::{
4    Game, GameDataPath, GameDetails, GameExtras, SystemRequirements, WishlistGame,
5};
6use serde::{Deserialize, Serialize};
7
8/// Type alias para dados de backup
9pub type BackupDataTuple = (
10    Vec<Game>,
11    Vec<GameDetails>,
12    Vec<WishlistGame>,
13    Vec<GameExtras>,
14    Vec<SystemRequirements>,
15    Vec<GameDataPath>,
16    u32,
17);
18
19/// Estrutura do arquivo de ‘backup’.
20///
21/// Contém metadados e todos os dados exportados da aplicação.
22#[derive(Serialize, Deserialize)]
23pub struct BackupData {
24    pub version: u32, // schema == backup
25    pub app_version: String,
26    pub date: String,
27    pub games: Vec<Game>,
28    pub game_details: Vec<GameDetails>,
29    pub wishlist_game: Vec<WishlistGame>,
30    /// Dados técnicos obtidos do PCGamingWiki.
31    /// Campo ausente em backups anteriores ao schema v4 — tratado como lista vazia.
32    #[serde(default)]
33    pub game_extras: Vec<GameExtras>,
34    /// Requisitos de sistema por jogo/OS/tier.
35    #[serde(default)]
36    pub system_requirements: Vec<SystemRequirements>,
37    /// Caminhos de save e config por jogo/OS.
38    #[serde(default)]
39    pub game_data_paths: Vec<GameDataPath>,
40}