1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
use clap::Clap; #[derive(Clap, Debug)] pub struct Opt { #[clap(subcommand)] pub command: Command, #[clap(short = 'D', long)] pub database_url: Option<String>, } #[derive(Clap, Debug)] pub enum Command { #[clap(alias = "db")] Database(DatabaseOpt), /// Generate query metadata to support offline compile-time verification. /// /// Saves metadata for all invocations of `query!` and related macros to `sqlx-data.json` /// in the current directory, overwriting if needed. /// /// During project compilation, the absence of the `DATABASE_URL` environment variable or /// the presence of `SQLX_OFFLINE` (with a value of `true` or `1`) will constrain the /// compile-time verification to only read from the cached query metadata. #[clap(alias = "prep")] Prepare { /// Run in 'check' mode. Exits with 0 if the query metadata is up-to-date. Exits with /// 1 if the query metadata needs updating. #[clap(long)] check: bool, /// Generate a single top-level `sqlx-data.json` file when using a cargo workspace. #[clap(long)] merged: bool, /// Arguments to be passed to `cargo rustc ...`. #[clap(last = true)] args: Vec<String>, }, #[clap(alias = "mig")] Migrate(MigrateOpt), } /// Group of commands for creating and dropping your database. #[derive(Clap, Debug)] pub struct DatabaseOpt { #[clap(subcommand)] pub command: DatabaseCommand, } #[derive(Clap, Debug)] pub enum DatabaseCommand { /// Creates the database specified in your DATABASE_URL. Create, /// Drops the database specified in your DATABASE_URL. Drop { /// Automatic confirmation. Without this option, you will be prompted before dropping /// your database. #[clap(short)] yes: bool, }, /// Drops the database specified in your DATABASE_URL, re-creates it, and runs any pending migrations. Reset { /// Automatic confirmation. Without this option, you will be prompted before dropping /// your database. #[clap(short)] yes: bool, /// Path to folder containing migrations. Defaults to 'migrations' #[clap(long, default_value = "migrations")] source: String, }, /// Creates the database specified in your DATABASE_URL and runs any pending migrations. Setup { /// Path to folder containing migrations. Defaults to 'migrations' #[clap(long, default_value = "migrations")] source: String, }, } /// Group of commands for creating and running migrations. #[derive(Clap, Debug)] pub struct MigrateOpt { /// Path to folder containing migrations. Defaults to 'migrations' #[clap(long, default_value = "migrations")] pub source: String, #[clap(subcommand)] pub command: MigrateCommand, } #[derive(Clap, Debug)] pub enum MigrateCommand { /// Create a new migration with the given description, /// and the current time as the version. Add { description: String, /// If true, creates a pair of up and down migration files with same version /// else creates a single sql file #[clap(short)] reversible: bool, }, /// Run all pending migrations. Run { /// List all the migrations to be run without applying #[clap(long)] dry_run: bool, }, /// Revert the latest migration with a down file. Revert { /// List the migration to be reverted without applying #[clap(long)] dry_run: bool, }, /// List all available migrations. Info, }