miden_node_utils/
limiter.rs1#[allow(missing_docs)]
12#[derive(Debug, thiserror::Error)]
13#[error("parameter {which} exceeded limit {limit}: {size}")]
14pub struct QueryLimitError {
15 which: &'static str,
16 size: usize,
17 limit: usize,
18}
19
20pub trait QueryParamLimiter {
23 const PARAM_NAME: &'static str;
25 const LIMIT: usize;
27 fn check(size: usize) -> Result<(), QueryLimitError> {
29 if size > Self::LIMIT {
30 Err(QueryLimitError {
31 which: Self::PARAM_NAME,
32 size,
33 limit: Self::LIMIT,
34 })?;
35 }
36 Ok(())
37 }
38}
39
40pub struct QueryParamAccountIdLimit;
43impl QueryParamLimiter for QueryParamAccountIdLimit {
44 const PARAM_NAME: &str = "account_id";
45 const LIMIT: usize = 1000;
46}
47
48pub struct QueryParamNullifierPrefixLimit;
51impl QueryParamLimiter for QueryParamNullifierPrefixLimit {
52 const PARAM_NAME: &str = "nullifier_prefix";
53 const LIMIT: usize = 1000;
54}
55
56pub struct QueryParamNullifierLimit;
61impl QueryParamLimiter for QueryParamNullifierLimit {
62 const PARAM_NAME: &str = "nullifier";
63 const LIMIT: usize = 1000;
64}
65
66pub struct QueryParamNoteTagLimit;
69impl QueryParamLimiter for QueryParamNoteTagLimit {
70 const PARAM_NAME: &str = "note_tag";
71 const LIMIT: usize = 1000;
72}
73
74pub struct QueryParamNoteIdLimit;
77impl QueryParamLimiter for QueryParamNoteIdLimit {
78 const PARAM_NAME: &str = "note_id";
79 const LIMIT: usize = 1000;
80}
81
82pub struct QueryParamNoteCommitmentLimit;
84impl QueryParamLimiter for QueryParamNoteCommitmentLimit {
85 const PARAM_NAME: &str = "note_commitment";
86 const LIMIT: usize = 1000;
87}
88
89pub struct QueryParamBlockLimit;
91impl QueryParamLimiter for QueryParamBlockLimit {
92 const PARAM_NAME: &str = "block_header";
93 const LIMIT: usize = 1000;
94}