Skip to main content

paperless_api/
task.rs

1use derive_more::Display;
2use serde::{Deserialize, Serialize};
3
4/// A paperless task
5#[derive(Debug, Clone, Deserialize)]
6pub struct Task {
7    pub id: u32,
8
9    /// The Celery-ID of the task.
10    pub task_id: crate::id::TaskId,
11
12    /// The name/king of the task.
13    #[serde(rename = "task_name")]
14    pub name: TaskName,
15
16    /// The type of the task.
17    #[serde(rename = "type")]
18    pub task_type: TaskType,
19
20    /// The status of the task.
21    pub status: TaskStatus,
22
23    pub owner: crate::id::UserId,
24
25    pub acknowledged: bool,
26    pub result: Option<String>,
27    pub related_document: Option<String>,
28}
29
30/// The status of a task.
31#[derive(Debug, Display, Clone, Copy, PartialEq, Eq, Hash, Deserialize)]
32#[serde(rename_all = "UPPERCASE")]
33pub enum TaskStatus {
34    Failure,
35    Pending,
36    Received,
37    Retry,
38    Revoked,
39    Started,
40    Success,
41}
42
43/// The name of a task.
44#[derive(Debug, Display, Clone, Copy, PartialEq, Eq, Hash, Deserialize, Serialize)]
45#[serde(rename_all = "snake_case")]
46pub enum TaskName {
47    ConsumeFile,
48    TrainClassifier,
49    CheckSanity,
50    IndexOptimize,
51}
52
53/// The type of a task.
54#[derive(Debug, Display, Clone, Copy, PartialEq, Eq, Hash, Deserialize, Serialize)]
55#[serde(rename_all = "snake_case")]
56pub enum TaskType {
57    AutoTask,
58    ScheduledTask,
59    ManualTask,
60}