iota_indexer_builder/
lib.rs

1// Copyright (c) Mysten Labs, Inc.
2// Modifications Copyright (c) 2024 IOTA Stiftung
3// SPDX-License-Identifier: Apache-2.0
4
5pub mod indexer_builder;
6pub mod iota_datasource;
7
8#[derive(Clone, Debug)]
9pub struct Task {
10    pub task_name: String,
11    pub checkpoint: u64,
12    pub target_checkpoint: u64,
13    pub timestamp: u64,
14}
15
16pub trait Tasks {
17    fn live_task(&self) -> Option<Task>;
18
19    fn backfill_tasks(&self) -> Vec<Task>;
20}
21
22impl Tasks for Vec<Task> {
23    fn live_task(&self) -> Option<Task> {
24        // TODO: Change the schema to record live task properly.
25        self.iter()
26            .find(|t| t.target_checkpoint == i64::MAX as u64)
27            .cloned()
28    }
29
30    fn backfill_tasks(&self) -> Vec<Task> {
31        self.iter()
32            .filter(|t| t.target_checkpoint != i64::MAX as u64)
33            .cloned()
34            .collect()
35    }
36}