• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

getdozer / dozer / 5686483572

pending completion
5686483572

push

github

web-flow
chore: Split `ApiInitError` out from `ApiError` (#1798)

50 of 50 new or added lines in 12 files covered. (100.0%)

45647 of 59023 relevant lines covered (77.34%)

39649.01 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

90.91
/dozer-api/src/api_helper.rs
1
use crate::auth::Access;
2
use crate::errors::{ApiError, AuthError};
3
use dozer_cache::cache::expression::QueryExpression;
4
use dozer_cache::cache::CacheRecord;
5
use dozer_cache::{AccessFilter, CacheReader};
6

7
pub const API_LATENCY_HISTOGRAM_NAME: &str = "api_latency";
8
pub const API_REQUEST_COUNTER_NAME: &str = "api_requests";
9
pub fn get_record(
1✔
10
    cache_reader: &CacheReader,
1✔
11
    key: &[u8],
1✔
12
    endpoint: &str,
1✔
13
    access: Option<Access>,
1✔
14
) -> Result<CacheRecord, ApiError> {
1✔
15
    let access_filter = get_access_filter(access, endpoint)?;
1✔
16
    let record = cache_reader
1✔
17
        .get(key, &access_filter)
1✔
18
        .map_err(ApiError::NotFound)?;
1✔
19
    Ok(record)
1✔
20
}
1✔
21

22
pub fn get_records_count(
14✔
23
    cache_reader: &CacheReader,
14✔
24
    exp: &mut QueryExpression,
14✔
25
    endpoint: &str,
14✔
26
    access: Option<Access>,
14✔
27
) -> Result<usize, ApiError> {
14✔
28
    let access_filter = get_access_filter(access, endpoint)?;
14✔
29
    cache_reader
14✔
30
        .count(exp, access_filter)
14✔
31
        .map_err(ApiError::CountFailed)
14✔
32
}
14✔
33

34
/// Get multiple records
35
pub fn get_records(
23✔
36
    cache_reader: &CacheReader,
23✔
37
    exp: &mut QueryExpression,
23✔
38
    endpoint: &str,
23✔
39
    access: Option<Access>,
23✔
40
) -> Result<Vec<CacheRecord>, ApiError> {
23✔
41
    let access_filter = get_access_filter(access, endpoint)?;
23✔
42
    cache_reader
23✔
43
        .query(exp, access_filter)
23✔
44
        .map_err(ApiError::QueryFailed)
23✔
45
}
23✔
46

47
fn get_access_filter(access: Option<Access>, endpoint: &str) -> Result<AccessFilter, ApiError> {
48
    match access {
3✔
49
        None | Some(Access::All) => Ok(AccessFilter {
38✔
50
            filter: None,
38✔
51
            fields: vec![],
38✔
52
        }),
38✔
53
        Some(Access::Custom(mut access_filters)) => {
×
54
            if let Some(access_filter) = access_filters.remove(endpoint) {
×
55
                Ok(access_filter)
×
56
            } else {
57
                Err(ApiError::ApiAuthError(AuthError::Unauthorized))
×
58
            }
59
        }
60
    }
61
}
38✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc