refactor: split who.rs into who/ module (bd-2cbw)

Split 2447-line who.rs into focused submodules:
- who/scoring.rs: half_life_decay (20 lines)
- who/queries.rs: 5 query functions + helpers (~1400 lines)
- who/format.rs: human + JSON formatters (~570 lines)
- who.rs: slim module root with mode dispatch + re-exports (~260 lines)

All 1052 tests pass. No public API changes.
This commit is contained in:
teernisse
2026-02-19 09:44:29 -05:00
parent e8ecb561cf
commit 20db46a514
5 changed files with 36 additions and 2150 deletions

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
bd-9lbr
bd-2cbw

File diff suppressed because it is too large Load Diff

View File

@@ -8,8 +8,8 @@ use crate::core::who_types::{
ActiveResult, ExpertResult, OverlapResult, ReviewsResult, WhoResult, WorkloadResult,
};
use super::WhoRun;
use super::queries::format_overlap_role;
use super::{WhoRun, WhoResolvedInput};
// ─── Human Output ────────────────────────────────────────────────────────────

View File

@@ -320,7 +320,7 @@ fn build_mr_refs_for_user(conn: &Connection, ua: &UserAccum) -> Vec<String> {
///
/// Parameters: `?1` = path, `?2` = since_ms, `?3` = project_id (nullable),
/// `?4` = as_of_ms, `?5` = closed_mr_multiplier, `?6` = reviewer_min_note_chars
fn build_expert_sql_v2(is_prefix: bool) -> String {
pub(super) fn build_expert_sql_v2(is_prefix: bool) -> String {
let path_op = if is_prefix {
"LIKE ?1 ESCAPE '\\'"
} else {
@@ -967,7 +967,7 @@ pub fn query_reviews(
}
/// Normalize a raw review prefix like "Suggestion (non-blocking):" into "suggestion".
fn normalize_review_prefix(raw: &str) -> String {
pub(super) fn normalize_review_prefix(raw: &str) -> String {
let s = raw.trim().trim_end_matches(':').trim().to_lowercase();
// Strip "(non-blocking)" and similar parentheticals