struct destructuring for DocumentsDeletionAggregator and TasksAggregator

This commit is contained in:
Vivek Kumar 2023-09-12 10:22:49 +05:30
parent 3cdb3e4eaf
commit 5831466525
No known key found for this signature in database
GPG Key ID: 5F915FFA1FD3B841

View File

@ -1389,19 +1389,29 @@ impl DocumentsDeletionAggregator {
/// Aggregate one [DocumentsAggregator] into another. /// Aggregate one [DocumentsAggregator] into another.
pub fn aggregate(&mut self, other: Self) { pub fn aggregate(&mut self, other: Self) {
let Self {
timestamp,
user_agents,
total_received,
per_document_id,
clear_all,
per_batch,
per_filter,
} = other;
if self.timestamp.is_none() { if self.timestamp.is_none() {
self.timestamp = other.timestamp; self.timestamp = timestamp;
} }
// we can't create a union because there is no `into_union` method // we can't create a union because there is no `into_union` method
for user_agent in other.user_agents { for user_agent in user_agents {
self.user_agents.insert(user_agent); self.user_agents.insert(user_agent);
} }
self.total_received = self.total_received.saturating_add(other.total_received); self.total_received = self.total_received.saturating_add(total_received);
self.per_document_id |= other.per_document_id; self.per_document_id |= per_document_id;
self.clear_all |= other.clear_all; self.clear_all |= clear_all;
self.per_batch |= other.per_batch; self.per_batch |= per_batch;
self.per_filter |= other.per_filter; self.per_filter |= per_filter;
} }
pub fn into_event(self, user: &User, event_name: &str) -> Option<Track> { pub fn into_event(self, user: &User, event_name: &str) -> Option<Track> {
@ -1444,49 +1454,82 @@ pub struct TasksAggregator {
impl TasksAggregator { impl TasksAggregator {
pub fn from_query(query: &TasksFilterQuery, request: &HttpRequest) -> Self { pub fn from_query(query: &TasksFilterQuery, request: &HttpRequest) -> Self {
let TasksFilterQuery {
limit: _,
from: _,
uids,
index_uids,
types,
statuses,
canceled_by,
before_enqueued_at,
after_enqueued_at,
before_started_at,
after_started_at,
before_finished_at,
after_finished_at,
} = query;
Self { Self {
timestamp: Some(OffsetDateTime::now_utc()), timestamp: Some(OffsetDateTime::now_utc()),
user_agents: extract_user_agents(request).into_iter().collect(), user_agents: extract_user_agents(request).into_iter().collect(),
filtered_by_uid: query.uids.is_some(), filtered_by_uid: uids.is_some(),
filtered_by_index_uid: query.index_uids.is_some(), filtered_by_index_uid: index_uids.is_some(),
filtered_by_type: query.types.is_some(), filtered_by_type: types.is_some(),
filtered_by_status: query.statuses.is_some(), filtered_by_status: statuses.is_some(),
filtered_by_canceled_by: query.canceled_by.is_some(), filtered_by_canceled_by: canceled_by.is_some(),
filtered_by_before_enqueued_at: query.before_enqueued_at.is_some(), filtered_by_before_enqueued_at: before_enqueued_at.is_some(),
filtered_by_after_enqueued_at: query.after_enqueued_at.is_some(), filtered_by_after_enqueued_at: after_enqueued_at.is_some(),
filtered_by_before_started_at: query.before_started_at.is_some(), filtered_by_before_started_at: before_started_at.is_some(),
filtered_by_after_started_at: query.after_started_at.is_some(), filtered_by_after_started_at: after_started_at.is_some(),
filtered_by_before_finished_at: query.before_finished_at.is_some(), filtered_by_before_finished_at: before_finished_at.is_some(),
filtered_by_after_finished_at: query.after_finished_at.is_some(), filtered_by_after_finished_at: after_finished_at.is_some(),
total_received: 1, total_received: 1,
} }
} }
/// Aggregate one [DocumentsAggregator] into another. /// Aggregate one [TasksAggregator] into another.
pub fn aggregate(&mut self, other: Self) { pub fn aggregate(&mut self, other: Self) {
let Self {
timestamp,
user_agents,
total_received,
filtered_by_uid,
filtered_by_index_uid,
filtered_by_type,
filtered_by_status,
filtered_by_canceled_by,
filtered_by_before_enqueued_at,
filtered_by_after_enqueued_at,
filtered_by_before_started_at,
filtered_by_after_started_at,
filtered_by_before_finished_at,
filtered_by_after_finished_at,
} = other;
if self.timestamp.is_none() { if self.timestamp.is_none() {
self.timestamp = other.timestamp; self.timestamp = timestamp;
} }
// we can't create a union because there is no `into_union` method // we can't create a union because there is no `into_union` method
for user_agent in other.user_agents { for user_agent in user_agents {
self.user_agents.insert(user_agent); self.user_agents.insert(user_agent);
} }
self.filtered_by_uid |= other.filtered_by_uid; self.filtered_by_uid |= filtered_by_uid;
self.filtered_by_index_uid |= other.filtered_by_index_uid; self.filtered_by_index_uid |= filtered_by_index_uid;
self.filtered_by_type |= other.filtered_by_type; self.filtered_by_type |= filtered_by_type;
self.filtered_by_status |= other.filtered_by_status; self.filtered_by_status |= filtered_by_status;
self.filtered_by_canceled_by |= other.filtered_by_canceled_by; self.filtered_by_canceled_by |= filtered_by_canceled_by;
self.filtered_by_before_enqueued_at |= other.filtered_by_before_enqueued_at; self.filtered_by_before_enqueued_at |= filtered_by_before_enqueued_at;
self.filtered_by_after_enqueued_at |= other.filtered_by_after_enqueued_at; self.filtered_by_after_enqueued_at |= filtered_by_after_enqueued_at;
self.filtered_by_before_started_at |= other.filtered_by_before_started_at; self.filtered_by_before_started_at |= filtered_by_before_started_at;
self.filtered_by_after_started_at |= other.filtered_by_after_started_at; self.filtered_by_after_started_at |= filtered_by_after_started_at;
self.filtered_by_before_finished_at |= other.filtered_by_before_finished_at; self.filtered_by_before_finished_at |= filtered_by_before_finished_at;
self.filtered_by_after_finished_at |= other.filtered_by_after_finished_at; self.filtered_by_after_finished_at |= filtered_by_after_finished_at;
self.filtered_by_after_finished_at |= other.filtered_by_after_finished_at; self.filtered_by_after_finished_at |= filtered_by_after_finished_at;
self.total_received = self.total_received.saturating_add(other.total_received); self.total_received = self.total_received.saturating_add(total_received);
} }
pub fn into_event(self, user: &User, event_name: &str) -> Option<Track> { pub fn into_event(self, user: &User, event_name: &str) -> Option<Track> {