canic_core/workflow/runtime/cycles/
query.rs1use crate::{
2 dto::{
3 cycles::CycleTrackerEntryView,
4 page::{Page, PageRequest},
5 },
6 ops::storage::cycles::CycleTrackerOps,
7 workflow::view::paginate::paginate_vec,
8};
9
10pub 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}