Skip to content

Commit 34f3210

Browse files
committed
refactor(engine): replace long argument lists with params structs
1 parent 4dc92c5 commit 34f3210

19 files changed

Lines changed: 441 additions & 223 deletions

File tree

nodedb/src/data/executor/dispatch/columnar.rs

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -56,14 +56,16 @@ impl CoreLoop {
5656
}
5757
self.execute_columnar_insert(
5858
task,
59-
collection,
60-
payload,
61-
format,
62-
*intent,
63-
on_conflict_updates,
64-
surrogates,
65-
schema_bytes,
66-
provenance.as_ref(),
59+
crate::data::executor::handlers::columnar_write::ColumnarInsertParams {
60+
collection,
61+
payload,
62+
format,
63+
intent: *intent,
64+
on_conflict_updates,
65+
surrogates,
66+
schema_bytes,
67+
provenance: provenance.as_ref(),
68+
},
6769
)
6870
}
6971

nodedb/src/data/executor/dispatch/crdt.rs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,15 @@ impl CoreLoop {
2727
constraint_version_required,
2828
} => self.execute_crdt_apply(
2929
task,
30-
collection,
31-
document_id,
32-
delta,
33-
*surrogate,
34-
*peer_id,
35-
provenance.as_ref(),
36-
*constraint_version_required,
30+
crate::data::executor::handlers::control::crdt::CrdtApplyParams {
31+
collection,
32+
document_id,
33+
delta,
34+
surrogate: *surrogate,
35+
peer_id: *peer_id,
36+
provenance: provenance.as_ref(),
37+
constraint_version_required: *constraint_version_required,
38+
},
3739
),
3840

3941
CrdtOp::ImportSnapshot {

nodedb/src/data/executor/dispatch/document.rs

Lines changed: 32 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -170,18 +170,20 @@ impl CoreLoop {
170170
};
171171
self.execute_document_scan(
172172
task,
173-
tid,
174-
collection,
175-
*limit,
176-
*offset,
177-
sort_keys,
178-
filters,
179-
*distinct,
180-
projection,
181-
computed_columns,
182-
window_functions,
183-
mode,
184-
prefilter.as_ref(),
173+
crate::data::executor::handlers::document::read::scan::DocumentScanParams {
174+
tid,
175+
collection,
176+
limit: *limit,
177+
offset: *offset,
178+
sort_keys,
179+
filters,
180+
distinct: *distinct,
181+
projection,
182+
computed_columns_bytes: computed_columns,
183+
window_functions_bytes: window_functions,
184+
mode,
185+
prefilter: prefilter.as_ref(),
186+
},
185187
)
186188
}
187189

@@ -318,13 +320,15 @@ impl CoreLoop {
318320
bitemporal,
319321
} => self.execute_register_document_collection(
320322
task,
321-
tid,
322-
collection,
323-
indexes,
324-
*crdt_enabled,
325-
storage_mode,
326-
enforcement,
327-
*bitemporal,
323+
super::super::handlers::document::write::RegisterDocumentCollectionParams {
324+
tid,
325+
collection,
326+
indexes,
327+
crdt_enabled: *crdt_enabled,
328+
storage_mode,
329+
enforcement,
330+
bitemporal: *bitemporal,
331+
},
328332
),
329333

330334
DocumentOp::IndexLookup {
@@ -389,13 +393,15 @@ impl CoreLoop {
389393
predicate,
390394
} => self.execute_backfill_index(
391395
task,
392-
tid,
393-
collection,
394-
path,
395-
*is_array,
396-
*unique,
397-
*case_insensitive,
398-
predicate.as_deref(),
396+
super::super::handlers::document::write::BackfillIndexParams {
397+
tid,
398+
collection,
399+
path,
400+
is_array: *is_array,
401+
unique: *unique,
402+
case_insensitive: *case_insensitive,
403+
predicate: predicate.as_deref(),
404+
},
399405
),
400406

401407
DocumentOp::MaterializeScan {

nodedb/src/data/executor/dispatch/meta.rs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -219,11 +219,13 @@ impl CoreLoop {
219219
new_collection,
220220
} => self.execute_rename_collection(
221221
task,
222-
*tenant_id,
223-
*old_database_id,
224-
*new_database_id,
225-
old_collection,
226-
new_collection,
222+
crate::data::executor::handlers::control::move_tenant::RenameCollectionParams {
223+
tenant_id: *tenant_id,
224+
old_database_id: *old_database_id,
225+
new_database_id: *new_database_id,
226+
old_collection,
227+
new_collection,
228+
},
227229
),
228230

229231
MetaOp::StageWrite { plan } => self.execute_stage_write(task, tid, plan),

nodedb/src/data/executor/dispatch/query.rs

Lines changed: 29 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,16 @@ impl CoreLoop {
6868
distinct,
6969
..
7070
} => self.execute_provider_scan(
71-
task, rows, filters, projection, sort_keys, *limit, *offset, *distinct,
71+
task,
72+
crate::data::executor::handlers::provider_scan::ProviderScanParams {
73+
rows_bytes: rows,
74+
filters_bytes: filters,
75+
projection,
76+
sort_keys,
77+
limit: *limit,
78+
offset: *offset,
79+
distinct: *distinct,
80+
},
7281
),
7382

7483
QueryOp::HashJoin {
@@ -186,14 +195,16 @@ impl CoreLoop {
186195
limit,
187196
} => self.execute_recursive_scan(
188197
task,
189-
tid,
190-
collection,
191-
base_filters,
192-
recursive_filters,
193-
join_link.as_ref(),
194-
*max_iterations,
195-
*distinct,
196-
*limit,
198+
crate::data::executor::handlers::recursive::RecursiveScanParams {
199+
tid,
200+
collection,
201+
base_filters,
202+
recursive_filters,
203+
join_link: join_link.as_ref(),
204+
max_iterations: *max_iterations,
205+
distinct: *distinct,
206+
limit: *limit,
207+
},
197208
),
198209

199210
QueryOp::RecursiveValue {
@@ -206,13 +217,15 @@ impl CoreLoop {
206217
distinct,
207218
} => self.execute_recursive_value(
208219
task,
209-
cte_name,
210-
columns,
211-
init_exprs,
212-
step_exprs,
213-
condition.as_deref(),
214-
*max_depth,
215-
*distinct,
220+
crate::data::executor::handlers::recursive_value::RecursiveValueParams {
221+
cte_name,
222+
columns,
223+
init_exprs,
224+
step_exprs,
225+
condition: condition.as_deref(),
226+
max_depth: *max_depth,
227+
distinct: *distinct,
228+
},
216229
),
217230

218231
QueryOp::FacetCounts {

nodedb/src/data/executor/handlers/columnar_write/insert.rs

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,18 @@ use nodedb_physical::physical_plan::document::UpdateValue;
2020

2121
use super::schema::{ndb_field_to_value, row_values_to_object};
2222

23+
/// Parameters for [`CoreLoop::execute_columnar_insert`].
24+
pub(in crate::data::executor) struct ColumnarInsertParams<'a> {
25+
pub collection: &'a str,
26+
pub payload: &'a [u8],
27+
pub format: &'a str,
28+
pub intent: ColumnarInsertIntent,
29+
pub on_conflict_updates: &'a [(String, UpdateValue)],
30+
pub surrogates: &'a [Surrogate],
31+
pub schema_bytes: &'a [u8],
32+
pub provenance: Option<&'a SyncProvenance>,
33+
}
34+
2335
impl CoreLoop {
2436
/// Execute a columnar insert: write rows from MessagePack payload to
2537
/// `MutationEngine`, applying intent-specific semantics on duplicate
@@ -34,19 +46,21 @@ impl CoreLoop {
3446
/// `SyncAckResult{Applied}`.
3547
///
3648
/// When `provenance` is `None` (SQL path), behave as before.
37-
#[allow(clippy::too_many_arguments)]
3849
pub(in crate::data::executor) fn execute_columnar_insert(
3950
&mut self,
4051
task: &ExecutionTask,
41-
collection: &str,
42-
payload: &[u8],
43-
_format: &str,
44-
intent: ColumnarInsertIntent,
45-
on_conflict_updates: &[(String, UpdateValue)],
46-
surrogates: &[Surrogate],
47-
schema_bytes: &[u8],
48-
provenance: Option<&SyncProvenance>,
52+
params: ColumnarInsertParams<'_>,
4953
) -> Response {
54+
let ColumnarInsertParams {
55+
collection,
56+
payload,
57+
format: _format,
58+
intent,
59+
on_conflict_updates,
60+
surrogates,
61+
schema_bytes,
62+
provenance,
63+
} = params;
5064
// ── Sync idempotency gate (Data-Plane side) ──────────────────────────
5165
if let Some(prov) = provenance {
5266
let admit = self.sync_admit(prov);

nodedb/src/data/executor/handlers/columnar_write/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ pub mod read_prior;
1111
pub mod schema;
1212
pub mod spatial;
1313

14+
pub(in crate::data::executor) use insert::ColumnarInsertParams;
1415
pub(in crate::data::executor) use schema::ndb_field_to_value;
1516
// `ensure_columnar_engine_schema` is an inherent `CoreLoop` method (defined
1617
// in `schema.rs`), called via `self.` — no re-export needed.

nodedb/src/data/executor/handlers/control/crdt.rs

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,17 @@ use crate::engine::crdt::tenant_state::ValidatedApplyOutcome;
1616
use crate::data::executor::core_loop::CoreLoop;
1717
use crate::data::executor::task::ExecutionTask;
1818

19+
/// Parameters for [`CoreLoop::execute_crdt_apply`].
20+
pub(in crate::data::executor) struct CrdtApplyParams<'a> {
21+
pub collection: &'a str,
22+
pub document_id: &'a str,
23+
pub delta: &'a [u8],
24+
pub surrogate: Surrogate,
25+
pub peer_id: u64,
26+
pub provenance: Option<&'a SyncProvenance>,
27+
pub constraint_version_required: u64,
28+
}
29+
1930
impl CoreLoop {
2031
pub(in crate::data::executor) fn execute_crdt_read(
2132
&mut self,
@@ -207,18 +218,20 @@ impl CoreLoop {
207218
}
208219
}
209220

210-
#[allow(clippy::too_many_arguments)]
211221
pub(in crate::data::executor) fn execute_crdt_apply(
212222
&mut self,
213223
task: &ExecutionTask,
214-
collection: &str,
215-
document_id: &str,
216-
delta: &[u8],
217-
surrogate: Surrogate,
218-
peer_id: u64,
219-
provenance: Option<&SyncProvenance>,
220-
constraint_version_required: u64,
224+
params: CrdtApplyParams<'_>,
221225
) -> Response {
226+
let CrdtApplyParams {
227+
collection,
228+
document_id,
229+
delta,
230+
surrogate,
231+
peer_id,
232+
provenance,
233+
constraint_version_required,
234+
} = params;
222235
let tenant_id = task.request.tenant_id;
223236

224237
let Some(prov) = provenance else {

nodedb/src/data/executor/handlers/control/move_tenant.rs

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,31 @@ use crate::bridge::envelope::{ErrorCode, Response};
1111
use crate::data::executor::core_loop::CoreLoop;
1212
use crate::data::executor::task::ExecutionTask;
1313

14+
/// Parameters for [`CoreLoop::execute_rename_collection`].
15+
pub(in crate::data::executor) struct RenameCollectionParams<'a> {
16+
pub tenant_id: u64,
17+
pub old_database_id: u64,
18+
pub new_database_id: u64,
19+
pub old_collection: &'a str,
20+
pub new_collection: &'a str,
21+
}
22+
1423
impl CoreLoop {
1524
/// Handle `MetaOp::RenameCollection`: re-key all documents and secondary
1625
/// indexes from `old_collection` to `new_collection` for `tenant_id` in
1726
/// every engine that uses db-qualified collection names for keying.
18-
#[allow(clippy::too_many_arguments)]
1927
pub(in crate::data::executor) fn execute_rename_collection(
2028
&mut self,
2129
task: &ExecutionTask,
22-
tenant_id: u64,
23-
old_database_id: u64,
24-
new_database_id: u64,
25-
old_collection: &str,
26-
new_collection: &str,
30+
params: RenameCollectionParams<'_>,
2731
) -> Response {
32+
let RenameCollectionParams {
33+
tenant_id,
34+
old_database_id,
35+
new_database_id,
36+
old_collection,
37+
new_collection,
38+
} = params;
2839
// Sparse engine (document schemaless + document strict).
2940
if let Err(e) = self.sparse.rename_collection(
3041
old_database_id,

0 commit comments

Comments
 (0)