sql_from_models_cli/
lib.rs1use anyhow::Result;
2use generate::generate;
3
4use crate::opt::{Command, DatabaseCommand, MigrateCommand};
5
6mod database;
7
8mod generate;
9mod migrate;
10mod opt;
11
12pub use crate::opt::Opt;
13
14pub async fn run(opt: Opt) -> Result<()> {
15 match opt.command {
16 Command::Migrate(migrate) => match migrate.command {
17 MigrateCommand::Add {
18 description,
19 reversible,
20 } => migrate::add(&migrate.source, &description, reversible).await?,
21 MigrateCommand::Run {
22 dry_run,
23 ignore_missing,
24 database_url,
25 } => migrate::run(&migrate.source, &database_url, dry_run, ignore_missing).await?,
26 MigrateCommand::Revert {
27 dry_run,
28 ignore_missing,
29 database_url,
30 } => migrate::revert(&migrate.source, &database_url, dry_run, ignore_missing).await?,
31 MigrateCommand::Info { database_url } => {
32 migrate::info(&migrate.source, &database_url).await?
33 }
34 MigrateCommand::BuildScript { force } => migrate::build_script(&migrate.source, force)?,
35 },
36 Command::Generate(gen_opt) => generate(gen_opt).await?,
37 Command::Database(database) => match database.command {
38 DatabaseCommand::Create { database_url } => database::create(&database_url).await?,
39 DatabaseCommand::Drop { yes, database_url } => {
40 database::drop(&database_url, !yes).await?
41 }
42 DatabaseCommand::Reset {
43 yes,
44 source,
45 database_url,
46 } => database::reset(&source, &database_url, !yes).await?,
47 DatabaseCommand::Setup {
48 source,
49 database_url,
50 } => database::setup(&source, &database_url).await?,
51 },
52 };
53
54 Ok(())
55}