canic_core/workflow/log/
query.rs1use 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
11pub 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 entries.sort_by(|a, b| b.created_at.cmp(&a.created_at));
31
32 paginate_vec(entries, page)
33 }
34}