Skip to content

chore(executor): extract prefetch.rs (#116 step 6)#516

Merged
ujeenet merged 1 commit into
developfrom
chore/116-executor-reorg-step6-extract-prefetch
May 23, 2026
Merged

chore(executor): extract prefetch.rs (#116 step 6)#516
ujeenet merged 1 commit into
developfrom
chore/116-executor-reorg-step6-extract-prefetch

Conversation

@ujeenet
Copy link
Copy Markdown
Owner

@ujeenet ujeenet commented May 22, 2026

Summary

Step 6 of the executor reorg (#116). Pulls the tri-dialect prefetch helpers into `executor/prefetch.rs`:

The PG-only `_on` variants stay in `mod.rs` — they're tightly coupled to PG's `PgRow` / `PgPool` types and the schema-mode tenancy path. `extract_pk_value` is now `pub(super)` so prefetch.rs can reach it.

mod.rs: 3640 → 3412 LOC (-228). prefetch.rs: 235 LOC.

Cumulative across steps 1-6: 4830 → 3412 LOC (-1418, ~29%).

Closes

#116 (partial — step 6)

Test plan

  • `cargo check --no-default-features --features sqlite,tenancy` clean.
  • `cargo check --all-features` clean.
  • `cargo test --lib --no-default-features --features sqlite,tenancy` — 1482 passing.
  • No public API change.

Pulls the tri-dialect prefetch_related helpers out of mod.rs:

- fetch_with_prefetch_pool — bi-dialect counterpart of the PG
  fetch_with_prefetch.
- fetch_with_prefetch_filtered_pool — Django's Prefetch(queryset=...)
  shape (issue #298 / T2.1).

The PG-only `_on` variants (annotate_count_children,
annotate_count_children_on, fetch_with_prefetch) plus the HasPkValue
trait stay in mod.rs — they're tightly coupled to PG's PgRow / PgPool
types and the schema-mode tenancy connection path. `extract_pk_value`
is now pub(super) so prefetch.rs can reach it.

mod.rs: 3640 → 3412 LOC (-228). prefetch.rs: 235 LOC.

1482 lib tests pass on the sqlite,tenancy litmus.
@ujeenet ujeenet merged commit 776a89e into develop May 23, 2026
15 of 16 checks passed
@ujeenet ujeenet deleted the chore/116-executor-reorg-step6-extract-prefetch branch May 23, 2026 00:08
ujeenet added a commit that referenced this pull request May 23, 2026
## Summary

Rolls 11 PRs from \`develop\` into \`main\`.

## Features (5)
- **#507** \`i18n::middleware::LocaleMiddleware\` — tower layer (cookie
+ Accept-Language) + documented \`Router::nest(\"/<lang>\", ...)\`
pattern for URL-prefix locales. Closes #406, #424.
- **#508** \`Translator::with_fallback_chain(&[...])\` — explicit
fallback locale chain. Closes #425.
- **#509** \`notifications::slack::webhook_callback(url)\` — Slack
incoming-webhook provider for the \`broadcast\` channel. Closes #418.
Also bumps \`free-disk-space\` reclaim (\`large-packages: true\`).
- **#510** Notifications fix — gate the \`database\` channel behind the
\`postgres\` feature so non-PG builds compile.

## Refactor: executor reorg (#116, 7 PRs)
Pulled \`crates/rustango/src/sql/executor.rs\` (4830 LOC) apart into
\`crates/rustango/src/sql/executor/\` with 9 sibling files.

- **#511** Mount as dir.
- **#512** \`page.rs\` + \`iter.rs\` + \`get_or_create.rs\`.
- **#513** \`values.rs\` (Django \`.values()\` / \`.values_list()\`).
- **#514** \`atomic.rs\` (\`transaction.atomic\` + \`on_commit\`) +
\`tx.rs\` (\`PoolTx\`).
- **#515** \`explain.rs\` (tri-dialect \`EXPLAIN\`).
- **#516** \`prefetch.rs\` (tri-dialect \`_pool\` prefetch).
- **#517** \`row_to_json.rs\` (per-dialect dynamic row → JSON).

mod.rs is now at 2923 LOC (-1907, **-39%**). Zero public-API change
throughout — every symbol still reachable from \`use rustango::sql::*\`.

## Test plan
Every constituent PR landed with sqlite_litmus + sqlite_live +
mysql_live + postgres_test all green. The merge itself is a no-conflict
fast-forward — no new code lands beyond what's already merged into
develop. Re-running CI on the merged main confirms the integration
shape.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant