sql_from_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;
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}