Commit 4eecda0
committed
feat(cli): add
Generates a `.sqlx` directory next to each workspace crate's `Cargo.toml`
instead of a single one at the workspace root, so editing one crate's
queries only touches that crate's query data.
The read side already supported this: `expand_input` looks for each query
file in `$CARGO_MANIFEST_DIR/.sqlx` before falling back to the workspace
root, per file. Only the write side was workspace-wide, because
`prepare` sets one `SQLX_OFFLINE_DIR` for a single `cargo check` over the
whole workspace.
Rather than run `cargo check` once per crate — which writes a crate's
query data into whichever sibling happened to trigger its first compile —
the macros now route their own save directory. `sqlx-cli` sets
`SQLX_OFFLINE_PER_CRATE`, and each expansion saves to
`$SQLX_OFFLINE_DIR/$CARGO_PKG_NAME`, which is correct regardless of build
order and still only needs one `cargo check`.
That staging tree lives under `target/`, and the CLI moves each crate's
files into its `.sqlx` afterwards. `--check` reuses the same layout to
compare against the checked-in data without touching it, and reports
failures per crate. Only `query-*.json` files are ever written or
deleted, so anything else in a `.sqlx` directory is left alone.
`--per-crate` implies `--workspace` and rejects `--all`, since crates
outside the workspace have no crate directory to write to. After a
successful run, query data left at the workspace root by a previous
`--workspace` run is reported as no longer generated or checked.
Claude-Session: https://claude.ai/code/session_011CmjiD9jHNqmdTptXkMu4jcargo sqlx prepare --per-crate
1 parent 1d674f5 commit 4eecda0
10 files changed
Lines changed: 755 additions & 35 deletions
File tree
- sqlx-cli
- src
- tests
- sqlx-macros-core/src/query
- src/macros
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
133 | 133 | | |
134 | 134 | | |
135 | 135 | | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
136 | 149 | | |
137 | 150 | | |
138 | 151 | | |
| |||
142 | 155 | | |
143 | 156 | | |
144 | 157 | | |
| 158 | + | |
| 159 | + | |
145 | 160 | | |
146 | 161 | | |
147 | 162 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
220 | 220 | | |
221 | 221 | | |
222 | 222 | | |
| 223 | + | |
223 | 224 | | |
224 | 225 | | |
225 | 226 | | |
226 | 227 | | |
227 | 228 | | |
228 | 229 | | |
229 | | - | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
230 | 240 | | |
231 | 241 | | |
232 | 242 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
15 | 15 | | |
16 | 16 | | |
17 | 17 | | |
18 | | - | |
| 18 | + | |
| 19 | + | |
19 | 20 | | |
20 | 21 | | |
21 | 22 | | |
| 23 | + | |
22 | 24 | | |
23 | 25 | | |
24 | 26 | | |
| |||
27 | 29 | | |
28 | 30 | | |
29 | 31 | | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
30 | 37 | | |
31 | 38 | | |
32 | 39 | | |
| |||
35 | 42 | | |
36 | 43 | | |
37 | 44 | | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
38 | 49 | | |
39 | 50 | | |
40 | 51 | | |
41 | 52 | | |
42 | 53 | | |
43 | 54 | | |
44 | | - | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
45 | 60 | | |
46 | 61 | | |
47 | 62 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
39 | 39 | | |
40 | 40 | | |
41 | 41 | | |
42 | | - | |
| 42 | + | |
| 43 | + | |
43 | 44 | | |
44 | 45 | | |
45 | 46 | | |
| |||
62 | 63 | | |
63 | 64 | | |
64 | 65 | | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
65 | 77 | | |
66 | 78 | | |
67 | 79 | | |
| |||
0 commit comments