1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
use hdk::prelude::*;
use super::fetchers::Fetchers;
use super::inputs::FetchEntriesTime;
use super::utils::is_valid_date_range;
use crate::wire_record::WireRecord;
/// fetches all entries of a certain type between two dates. Calls different sub methods depending on if an hour is suppled.
pub fn fetch_entries_in_time_range<
EntryType: 'static + TryFrom<SerializedBytes, Error = SerializedBytesError>,
TY,
E,
>(
fetchers: &Fetchers,
link_type_filter: LinkTypeFilter,
link_type: TY,
start_time: FetchEntriesTime,
end_time: FetchEntriesTime,
base_component: String,
) -> Result<Vec<WireRecord<EntryType>>, WasmError>
where
ScopedLinkType: TryFrom<TY, Error = E>,
TY: Clone,
WasmError: From<E>,
{
is_valid_date_range(start_time.clone(), end_time.clone())?;
match start_time.hour {
None => {
match end_time.hour {
None => fetchers
.day_to_day
.fetch_entries_from_day_to_day::<EntryType, TY, E>(
fetchers,
link_type_filter,
link_type,
start_time.clone(),
end_time.clone(),
base_component,
),
Some(_) => {
//day to hour: loop from 1st day to 2nd last day, then loop through hours in last day
fetchers
.day_to_hour
.fetch_entries_from_day_to_hour::<EntryType, TY, E>(
fetchers,
link_type_filter,
link_type,
start_time.clone(),
end_time.clone(),
base_component,
)
}
}
}
Some(_) => {
match end_time.hour {
None => {
// hour to day: loop through hours on first day, then 2nd day to last day
fetchers
.hour_to_day
.fetch_entries_from_hour_to_day::<EntryType, TY, E>(
fetchers,
link_type_filter,
link_type,
start_time.clone(),
end_time.clone(),
base_component,
)
}
Some(_) => {
// hour to hour: loop through hours on first day, then 2nd day to 2nd last day, then hours on last day
fetchers
.hour_to_hour
.fetch_entries_from_hour_to_hour::<EntryType, TY, E>(
fetchers,
link_type_filter,
link_type,
start_time.clone(),
end_time.clone(),
base_component,
)
}
}
}
}
}