60 Commits

Author SHA1 Message Date
Ivan Kozik
b9a8f90b0c
fix(sqlx-cli): fix the build (#1969)
This fixes:

```
error[E0616]: field `target_directory` of struct `metadata::Metadata` is private
   --> sqlx-cli/src/prepare.rs:175:47
    |
175 |             .env("CARGO_TARGET_DIR", metadata.target_directory.clone())
    |                                               ^^^^^^^^^^^^^^^^ private field
    |
help: a method `target_directory` also exists, call it with parentheses
    |
175 |             .env("CARGO_TARGET_DIR", metadata.target_directory().clone())
    |                                                               ++
```
2022-07-14 00:09:53 -07:00
Fredrik Park
7d8ded9a1a
Set CARGO_TARGET_DIR when compiling the prepare queries (#1910)
* Move compiled query data

I did try to set rustc's --out-dir but encountered a strange error
stating that it can not be set more than once (even though I am unable
to deduce what else is setting it).

This enabled me to set a custom CARGO_TARGET_DIR and still be able to
prepare queries.

* Set CARGO_TARGET_DIR in the rustc invocation
2022-07-12 17:25:52 -07:00
LovecraftianHorror
2c67e2a29e
Try avoiding a full clean in cargo sqlx prepare --merged (#1802)
* refactor(sqlx-cli): Try avoiding a full clean with `--merged`

* docs(sqlx-cli): Sprinkle some comments on the metadata changes

* refactor(sqlx-cli): Make the new recompiltion setup unit-testable

* fix(sqlx-cli): Only pass in `$RUSTFLAGS` when set when using `--merged`

* refactor(sqlx-cli): `cargo clean -p` works by name so rip out pkgid code

* chore(sqlx-cli): Remove unused imports
2022-07-12 14:29:41 -07:00
Austin Bonander
bc3e70545b
sqlite improvements (#1965)
* use direct blocking calls for SQLite in `sqlx_macros`
    * this also ensures the database is closed properly, cleaning up tempfiles
* don't send `PRAGMA journal_mode` unless set
    * this previously defaulted to WAL mode which is a permanent setting
      on databases which doesn't necessarily apply to all use-cases
    * changing into or out of WAL mode acquires an exclusive lock on the database
      that can't be waited on by `sqlite3_busy_timeout()`
    * for consistency, `sqlx-cli` commands that create databases will still
      create SQLite databases in WAL mode; added a flag to disable this.
* in general, don't send `PRAGMA`s unless different than default
    * we were sending a bunch of `PRAGMA`s with their default values just to enforce
      an execution order on them, but we can also do this by inserting empty slots
      for their keys into the `IndexMap`
* add error code to `SqliteError` printout
* document why `u64` is not supported
2022-07-12 13:59:37 -07:00
Miklós Tusz
664d576655
Fix migration checksum comparison during migrate info (#1888)
When running `sqlx migrate info`, the applied migrations checksums are
compared against the checksums of the local migration files. While the
checksums of applied migrations are stored correctly in the database as
sha384sum values, the `migrate info` command was incorrectly comparing
these against the checksums of down-migrations in cases where reversible
migrations are being used (e.g. when migrations end in `.up.sql` and
`.down.sql`).

This fixes the issue by skipping over any migrations with the
`MigrationType::ReversibleDown` type, using the same idiom as is used
when running migrations (with `migrate run`).

Issue introduced in #1680
Partially resolves #1158
2022-06-10 12:07:23 -07:00
Austin Bonander
1f91724927
feat(cli): add --connect-timeout (#1889) 2022-06-08 15:48:04 -07:00
Kian-Meng Ang
d52f301a94
Fix typos (#1894)
* Fix typos

* Update CHANGELOG.md

Co-authored-by: Austin Bonander <austin.bonander@gmail.com>

Co-authored-by: Austin Bonander <austin.bonander@gmail.com>
2022-06-08 14:56:56 -07:00
Pedro de Matos Fedricci
c30a4a5d88
Add --source for migration subcommands (#1769) 2022-04-01 12:19:51 -07:00
LovecraftianHorror
feff96c460
fix(sqlx-cli): pass the DATABASE_URL to command spawned for sqlx-macros (#1735) 2022-03-09 10:24:00 -06:00
Marcin Puc
313cc69988
Simplify cargo-sqlx cmdline definition (#1626)
* Simplify cargo-sqlx cmdline definition

* Add note about the parser definition for cargo-sqlx

* Fix formatting
2022-02-15 20:13:42 -08:00
Liam
7fb54d3d7b
Add checksum mismtaches to sqlx-cli migrate info (#1680)
This fixes #870
2022-02-15 20:11:06 -08:00
Austin Bonander
fdbfc5dfc3
Prepare 0.5.10 release (#1603)
* fix(cli): change new `rustls` and `native-tls` features to use correct runtime feature

* chore: upgrade SQLx crates to 0.5.10, upgrade all dependencies to latest versions

chore(cli): upgraded `clap` to `3.0.0-rc.9`

* fix(tests/sqlite): ignore `issue_1467()` as spuriously failing

I'm well aware of the principle that a spuriously failing test is a failing test, but even though I have it outputting the seed used with a reproducible PRNG, I can't reproduce the failures locally, so 🤷.

* chore: add CHANGELOG entry for 0.5.10
2021-12-29 17:25:49 -08:00
Thomas Kintscher
f0d0f2f2e9
Append to existing RUSTFLAGS, instead of overwriting. (#1582)
* Append to existing RUSTFLAGS, instead of overwriting.

* Assemble RUSTFLAGS correctly.

Co-authored-by: Thomas Kintscher <thomas@flowciety.de>
2021-12-20 19:12:58 -08:00
David James
bb33a296cb
Fix issue #1431 (#1432)
Why: dotenv() must execute before clap's get_matches()

Co-authored-by: David James <davidcjames@gmail.com>
2021-09-10 15:06:49 -07:00
David James
ad81e35f28
Use promptly instead of dialoguer (#1410)
See #1409

Co-authored-by: David James <davidcjames@gmail.com>
2021-08-30 14:10:53 -07:00
Evan Cameron
0e51272b72
fix(cli) move database_url #1391 (#1400) 2021-08-30 14:10:01 -07:00
Austin Bonander
e89cb0971a
fix(macros): tell the compiler about external files/env vars to watch (#1332)
* fix(macros): tell the compiler about external files/env vars to watch

closes #663
closes #681

* feat(cli): add `migrate` subcommand for generating a build script

suggest embedding migrations on `sqlx migrate add` in a new project
2021-07-21 16:36:22 -07:00
Kitsu
be88631b5e Remove redundant args default notice 2021-04-27 12:35:46 -07:00
Stephen W
212d235334
Try to make 'no queries found' message more clear (#1191)
* try to make 'no queries found' message more clear

* Be more polite
2021-04-26 00:40:33 -07:00
Benjamin Bäumler
fc6eb6363b sqlx-cli database reset fix confirmation flag
sqlx database reset currenctly requires no confirmation and a
confirmation when -y flag is set. Should be the other way around
as it is for sqlx database drop. This commit fixes this.
2021-04-09 00:12:27 -07:00
Vyacheslav Gudkov
674d89bbab Removed unnecessarey preserve_order feature for serde_json. More reliable serialization-desetislization of sqlx-data.json. Added unit tests for sqlx-data.json serialization-deserialization
Signed-off-by: Vyacheslav Gudkov <vyacheslav.gudkov@dsr-corporation.com>
2021-04-09 00:10:32 -07:00
Evgeny Nosov
85ff651ba1 Add ignore_missing parameter 2021-04-08 23:50:39 -07:00
Evgeny Nosov
8950332ca3 Rewrite migration algorithm in order to apply also unapplied migrations 2021-04-08 23:50:39 -07:00
AriusX7
ed20639d47 Move Cargo.toml check to run_prepare_step 2021-01-31 16:55:57 -08:00
AriusX7
264cb09528 Don't require Cargo.toml for all subcommands 2021-01-31 16:55:57 -08:00
Jonas Platte
0758ffd10e Remove cargo_metadata dependency
It was not pulling its weight.

Just look at that Cargo.lock diff!
2021-01-13 23:05:56 -08:00
Jonas Platte
501be329e7 Fix docs for cargo sqlx prepare 2021-01-13 23:05:56 -08:00
Jonas Platte
d2d56c69fa [offline] Don't read sqlx-data.json into a String before parsing 2021-01-13 23:05:56 -08:00
Jonas Platte
52a7c35439 [offline] Use buffering for JSON file reading / writing 2021-01-13 23:05:56 -08:00
Joe Grund
3e1da43434 Support workspaces for offline feature
This patch enables having a top-level `sqlx-data.json` file within a
workspace.

It does this by using a full clean / check instead of `cargo rustc`
which fails on a workspace.

A `--merged` flag is introduced to switch to the workspace behavior

Fixes #353.

Signed-off-by: Joe Grund <jgrund@whamcloud.io>
2020-12-19 05:17:07 +00:00
sid
e8c073c5e2 fix migrate marco to take migration type 2020-11-24 16:04:43 -08:00
sid
f41551f3ad reversible migrations for cli
- adds a -r flag whihc will create a reversible migration
- add revert subcommand, which reverts the last migration
- add --dry-run flag to migration run command, which list the migrations that will be applied
- updates add migration to check if all migration are of same type, i.e cannot mix and match reversible and simple migrations
2020-11-24 16:04:43 -08:00
Jonas Platte
3c7c266eac Fix some clippy lints 2020-11-19 14:04:07 -08:00
Ryan Leckey
12da5ba534 fix: usage of migrate::run now takes two parameters 2020-11-12 07:38:54 -08:00
Stuart Hinson
c91eb2b04a use default_value for migrations source 2020-11-12 07:13:01 -08:00
Stuart Hinson
a4729cdcc8 Add source param to command line 2020-11-12 07:13:01 -08:00
Ivan Tham
6a5c54be70 Add context of where to put the offline feature 2020-11-03 22:50:37 -08:00
Jonas Platte
139704f264 Pass SQLX_OFFLINE=false to rustc in prepare
Without this, `cargo sqlx prepare` is just an expensive no-op and
`cargo sqlx prepare --check` checks `sqlx-data.json` against itself.
2020-10-29 22:21:27 -07:00
Jonas Platte
f45f9ae8ed Fix a typo 2020-10-29 22:21:27 -07:00
Chloe Ross
e816943c60 fix(cli): wait for newlines for confirmations 2020-10-23 19:33:13 -07:00
Jonas Platte
e00d8aaa5a Bump clap version
This time use an exact version requirement since it would otherwise be
upgraded to later betas automatically.
2020-10-13 10:04:05 -07:00
Jonas Platte
e3a71f095c Delete target/sqlx before invoking cargo in cargo sqlx prepare 2020-10-13 09:51:10 -07:00
Kramer Hampton
2e1658e08b feat: adds the setup command to the sqlx-cli
The reset command is the equivalent of `sqlx db create`,
and `sqlx migrate run`.
2020-09-10 21:32:04 -07:00
Kramer Hampton
916f1fccf2 feat: adds the reset command to the sqlx-cli
The reset command is the equivalent of `sqlx db drop`, `sqlx db create`,
and `sqlx migrate run`. Unless the `-y` parameter is specified, it will
prompt confirmation before dropping the database.
2020-09-10 21:32:04 -07:00
LMJW
48a55a407b fix(issue #558)
- check the existance of `Cargo.toml` at current working directory
  before checking 'DATABASE_URL' environment variable
2020-08-19 18:00:40 -07:00
Stuart Hinson
2ec5ff06b0 Add --database-url to command line 2020-08-17 20:06:26 -07:00
aspen
94413bd830 sqlx-cli: Exit with code 1 on error. 2020-07-29 12:04:12 -07:00
Ryan Leckey
f298eb3cf1 Merge remote-tracking branch 'raftario/embedded-migrations' 2020-07-26 18:03:59 -07:00
Jonas Platte
979ddeb222 cargo-sqlx-cli: Fix exiting with 0 on failure 2020-07-24 07:54:06 -07:00
Raphaël Thériault
92646e00b8 Fix migrate! and add migration test 2020-07-23 17:46:27 -04:00