Skip to main content

paperless_api/
task.rs

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