Skip to main content

canic_core/workflow/runtime/cycles/
query.rs

1use crate::{
2    dto::{
3        cycles::CycleTrackerEntry,
4        page::{Page, PageRequest},
5    },
6    ops::storage::cycles::CycleTrackerOps,
7    workflow::view::paginate::paginate_vec,
8};
9
10///
11/// CycleTrackerQuery
12///
13
14pub struct CycleTrackerQuery;
15
16impl CycleTrackerQuery {
17    #[must_use]
18    pub fn page(page: PageRequest) -> Page<CycleTrackerEntry> {
19        let page = paginate_vec(CycleTrackerOps::entries(), page);
20        let entries = page
21            .entries
22            .into_iter()
23            .map(|(timestamp_secs, cycles)| CycleTrackerEntry {
24                timestamp_secs,
25                cycles,
26            })
27            .collect();
28
29        Page {
30            entries,
31            total: page.total,
32        }
33    }
34}