sqlx_models_cli/
lib.rs

1use anyhow::Result;
2use generate::generate;
3
4use crate::opt::{Command, DatabaseCommand, MigrateCommand};
5
6mod database;
7
8mod generate;
9mod migrate;
10mod opt;
11mod prepare;
12
13pub use crate::opt::Opt;
14
15pub async fn run(opt: Opt) -> Result<()> {
16    match opt.command {
17        Command::Migrate(migrate) => match migrate.command {
18            MigrateCommand::Add {
19                description,
20                reversible,
21            } => migrate::add(&migrate.source, &description, reversible).await?,
22            MigrateCommand::Run {
23                dry_run,
24                ignore_missing,
25                database_url,
26            } => migrate::run(&migrate.source, &database_url, dry_run, ignore_missing).await?,
27            MigrateCommand::Revert {
28                dry_run,
29                ignore_missing,
30                database_url,
31            } => migrate::revert(&migrate.source, &database_url, dry_run, ignore_missing).await?,
32            MigrateCommand::Info { database_url } => {
33                migrate::info(&migrate.source, &database_url).await?
34            }
35            MigrateCommand::BuildScript { force } => migrate::build_script(&migrate.source, force)?,
36            MigrateCommand::Generate {
37                database_url,
38                table,
39                
40            } => generate(&database_url, table, &migrate.source).await,
41        },
42
43        Command::Database(database) => match database.command {
44            DatabaseCommand::Create { database_url } => database::create(&database_url).await?,
45            DatabaseCommand::Drop { yes, database_url } => {
46                database::drop(&database_url, !yes).await?
47            }
48            DatabaseCommand::Reset {
49                yes,
50                source,
51                database_url,
52            } => database::reset(&source, &database_url, !yes).await?,
53            DatabaseCommand::Setup {
54                source,
55                database_url,
56            } => database::setup(&source, &database_url).await?,
57        },
58
59        Command::Prepare {
60            check: false,
61            merged,
62            args,
63            database_url,
64        } => prepare::run(&database_url, merged, args)?,
65
66        Command::Prepare {
67            check: true,
68            merged,
69            args,
70            database_url,
71        } => prepare::check(&database_url, merged, args)?,
72    };
73
74    Ok(())
75}