use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
use std::path::PathBuf;
use uuid::Uuid;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DownloadTask {
pub id: Uuid,
pub url: String,
pub title: String,
pub platform: String,
pub status: DownloadStatus,
pub output_dir: PathBuf,
pub created_at: DateTime<Utc>,
pub updated_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub enum DownloadStatus {
Queued,
Downloading,
Paused,
Completed,
Failed,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DownloadProgress {
pub task_id: Uuid,
pub percent: f64,
pub speed_bps: u64,
}