Skip to content

chore(executor): extract atomic + tx modules (#116 step 4)#514

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

chore(executor): extract atomic + tx modules (#116 step 4)#514
ujeenet merged 1 commit into
developfrom
chore/116-executor-reorg-step4-extract-prefetch

Conversation

@ujeenet
Copy link
Copy Markdown
Owner

@ujeenet ujeenet commented May 22, 2026

Summary

Step 4 of the executor reorg (#116). Pulls the transaction primitives out into their own files:

File LOC Contents
`tx.rs` 136 `PoolTx<'a>` enum + `transaction_pool` helper
`atomic.rs` 178 `atomic(&pool,

The `atomic!` declarative macro stays `#[macro_export]`-mounted at the crate root, co-located with the `atomic` fn for readability.

mod.rs: 4139 → 3852 LOC (-287).

Closes

#116 (partial — step 4 of 6 planned)

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 transaction primitives out into their own files:

- tx.rs (136 LOC) — `PoolTx<'a>` enum + `transaction_pool`
  user-facing helper. Per-backend `BEGIN` wrapper that hands the
  caller a backend-tagged transaction handle.
- atomic.rs (178 LOC) — Django-shape `atomic(&pool, |tx| ...)` +
  `on_commit(callback)` + `on_commit_pending()` (issue #44). Uses
  a `tokio::task_local!` to queue commit-time callbacks.

The `atomic!` declarative macro stays `#[macro_export]`-mounted at
the crate root, co-located with the `atomic` fn for readability.

mod.rs: 4139 → 3852 LOC (-287). Both new files are sibling leaves
with zero cross-module dependencies beyond `super::{Pool, ExecError,
Dialect}` + the public `PoolTx` enum.

1482 lib tests pass on the sqlite,tenancy litmus.
@ujeenet ujeenet merged commit cb2642a into develop May 22, 2026
8 checks passed
@ujeenet ujeenet deleted the chore/116-executor-reorg-step4-extract-prefetch branch May 22, 2026 22:19
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