Skip to main content

canic_core/workflow/log/
query.rs

1use crate::{
2    dto::{
3        log::LogEntry,
4        page::{Page, PageRequest},
5    },
6    log::Level,
7    ops::runtime::log::LogOps,
8    workflow::view::paginate::paginate_vec,
9};
10
11///
12/// LogQuery
13/// Read-only log views and pagination helpers.
14///
15
16pub struct LogQuery;
17
18impl LogQuery {
19    #[must_use]
20    pub fn page(
21        crate_name: Option<String>,
22        topic: Option<String>,
23        min_level: Option<Level>,
24        page: PageRequest,
25    ) -> Page<LogEntry> {
26        let mut entries =
27            LogOps::snapshot_filtered(crate_name.as_deref(), topic.as_deref(), min_level);
28
29        // Newest first
30        entries.sort_by(|a, b| b.created_at.cmp(&a.created_at));
31
32        paginate_vec(entries, page)
33    }
34}