1use crate::db::ExtractionTaskKind;
2
3mod enqueue;
4mod exhaust;
5mod lifecycle;
6mod loaders;
7
8pub use enqueue::*;
9pub use lifecycle::*;
10
11pub const EXTRACTION_TASK_MAX_ATTEMPTS: i64 = 5;
12
13#[derive(Debug, Clone, PartialEq, Eq)]
14pub struct ExtractionTask {
15 pub id: i64,
16 pub task_kind: ExtractionTaskKind,
17 pub host_id: i64,
18 pub workspace_id: i64,
19 pub project_id: i64,
20 pub session_row_id: Option<i64>,
21 pub host: String,
22 pub project: String,
23 pub session_id: Option<String>,
24 pub ai_profile: Option<String>,
25 pub priority: i64,
26 pub cursor_event_id: Option<i64>,
27 pub high_watermark_event_id: Option<i64>,
28 pub attempts: i64,
29 pub replay_range_id: Option<i64>,
30}
31
32#[cfg(test)]
33mod retry_regression_tests;
34#[cfg(test)]
35mod tests;