omni_orchestrator/schemas/v1/models/
backup.rs

1use serde::{Deserialize, Serialize};
2use chrono::{DateTime, Utc};
3use serde_json::Value;
4use sqlx::Row;
5
6#[derive(Debug, sqlx::FromRow, Serialize, Deserialize)]
7pub struct Backup {
8    pub id: i64,
9    pub name: String,
10    pub description: Option<String>,
11    pub created_at: DateTime<Utc>,
12    pub created_by: String,
13    pub backup_type: String, // enum: 'PLATFORM', 'APPLICATION', 'PARTIAL'
14    pub status: String, // enum: 'CREATING', 'AVAILABLE', 'RESTORING', 'FAILED', 'DELETED'
15    pub format_version: String,
16    pub source_environment: String,
17    pub encryption_method: Option<String>,
18    pub encryption_key_id: Option<i64>,
19    pub size_bytes: Option<i64>,
20    pub has_system_core: bool,
21    pub has_directors: bool,
22    pub has_orchestrators: bool,
23    pub has_network_config: bool,
24    pub has_app_definitions: bool,
25    pub has_volume_data: bool,
26    pub included_apps: Option<String>,
27    pub included_services: Option<String>,
28    pub last_validated_at: Option<DateTime<Utc>>,
29    pub last_restored_at: Option<DateTime<Utc>>,
30    pub restore_target_environment: Option<String>,
31    pub restore_status: Option<String>,
32    pub storage_location: String,
33    pub manifest_path: String,
34    pub metadata: Option<Value>,
35}