canic_core/workflow/runtime/cycles/
query.rs

1use crate::{
2    dto::{
3        cycles::CycleTrackerEntryView,
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<CycleTrackerEntryView> {
19        let snapshot = CycleTrackerOps::snapshot();
20        let page = paginate_vec(snapshot.entries, page);
21        let entries = page
22            .entries
23            .into_iter()
24            .map(|(timestamp_secs, cycles)| CycleTrackerEntryView {
25                timestamp_secs,
26                cycles,
27            })
28            .collect();
29
30        Page {
31            entries,
32            total: page.total,
33        }
34    }
35}