msr_plugin_csv_register_recorder/api/
query.rs

1use std::num::NonZeroUsize;
2
3use msr_core::storage::RecordPreludeFilter;
4
5use crate::ResultSender;
6
7use super::{Config, RegisterGroupConfig, RegisterGroupId, Status, StoredRegisterRecord};
8
9#[derive(Debug, Clone)]
10pub struct RecentRecordsRequest {
11    pub limit: NonZeroUsize,
12}
13
14#[derive(Debug, Clone)]
15pub struct FilterRecordsRequest {
16    pub limit: NonZeroUsize,
17    pub filter: RecordPreludeFilter,
18}
19
20#[derive(Debug, Clone, Default)]
21pub struct StatusRequest {
22    pub with_register_groups: bool,
23    pub with_storage_statistics: bool,
24}
25
26#[derive(Debug)]
27pub enum Query {
28    Config(ResultSender<Config>),
29    RegisterGroupConfig(ResultSender<Option<RegisterGroupConfig>>, RegisterGroupId),
30    Status(ResultSender<Status>, StatusRequest),
31    RecentRecords(
32        ResultSender<Vec<StoredRegisterRecord>>,
33        RegisterGroupId,
34        RecentRecordsRequest,
35    ),
36    FilterRecords(
37        ResultSender<Vec<StoredRegisterRecord>>,
38        RegisterGroupId,
39        FilterRecordsRequest,
40    ),
41}