use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct Task {
pub id: String,
pub name: Option<String>,
pub status: String,
pub created_at: String,
pub updated_at: String,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct TaskResponse {
pub created_at: String,
pub updated_at: String,
pub id: String,
pub status: TaskStatus,
pub r#type: TaskType,
pub summary: Option<TaskSummary>,
pub duration: Option<i64>,
pub resume_time: Option<i64>,
pub error: Option<String>,
pub error_history: Option<Vec<String>>,
pub retry_count: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub node: Option<NewNode>,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub enum TaskStatus {
#[serde(rename = "queued")]
Queued,
#[serde(rename = "processing")]
Processing,
#[serde(rename = "suspending")]
Suspending,
#[serde(rename = "error")]
Error,
#[serde(rename = "canceled")]
Canceled,
#[serde(rename = "completed")]
Completed,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub enum TaskType {
#[serde(rename = "media_meta")]
MediaMeta,
#[serde(rename = "entity_recycle_routine")]
EntityRecycleRoutine,
#[serde(rename = "explicit_entity_recycle")]
ExplicitEntityRecycle,
#[serde(rename = "upload_sentinel_check")]
UploadSentinelCheck,
#[serde(rename = "create_archive")]
CreateArchive,
#[serde(rename = "extract_archive")]
ExtractArchive,
#[serde(rename = "relocate")]
Relocate,
#[serde(rename = "remote_download")]
RemoteDownload,
#[serde(rename = "import")]
Import,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct TaskSummary {
#[serde(skip_serializing_if = "Option::is_none")]
pub phase: Option<String>,
pub props: serde_json::Value,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct NewNode {
pub id: String,
pub name: String,
pub r#type: NodeType,
pub capabilities: String,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub enum NodeType {
#[serde(rename = "master")]
Master,
#[serde(rename = "slave")]
Slave,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct TaskListResponse {
pub pagination: TaskPagination,
pub tasks: Vec<TaskResponse>,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct TaskPagination {
pub page_size: i32,
pub next_token: Option<String>,
pub is_cursor: bool,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct TaskProgress {
pub progress: f64,
pub message: String,
pub total: Option<u64>,
pub current: Option<u64>,
}
#[derive(Debug, Deserialize, Clone)]
pub struct DetailedTask {
pub id: String,
pub name: String,
pub status: String,
pub type_: String,
pub created_at: String,
pub updated_at: String,
pub progress: Option<TaskProgress>,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct Progress {
#[serde(skip_serializing_if = "Option::is_none")]
pub total: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub current: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub identifier: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct Activity {
pub id: String,
pub content: LogEntry,
pub created_at: String,
pub user: Option<super::auth::NewUser>,
pub version_id: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct LogEntry {
pub r#type: String,
pub props: serde_json::Value,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct FileActivitiesResponse {
pub activities: Vec<Activity>,
pub pagination: ActivitiesPagination,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct ActivitiesPagination {
pub page: i32,
pub page_size: i32,
pub next_token: Option<String>,
pub is_cursor: bool,
}
#[derive(Debug, Serialize, Default)]
pub struct ListTasksRequest<'a> {
pub page: Option<u32>,
pub per_page: Option<u32>,
pub status: Option<&'a str>,
pub type_: Option<&'a str>,
}
#[derive(Debug, Serialize)]
pub struct CreateArchiveRequest<'a> {
#[serde(rename = "src")]
pub src: Vec<&'a str>,
#[serde(rename = "dst")]
pub dst: &'a str,
}
#[derive(Debug, Serialize)]
pub struct ExtractArchiveRequest<'a> {
#[serde(rename = "src")]
pub src: Vec<&'a str>,
#[serde(rename = "dst")]
pub dst: &'a str,
}