backend/main.rs

62 lines
1.2 KiB
Rust

use clap::{Parser, Subcommand};
/// Super Cool Chat Thing c:
#[derive(Parser)]
struct Args {
#[clap(subcommand)]
cmd: Command,
#[arg(long, default_value = "sqlite://./scct.db")]
/// connection string to database
db: String,
#[arg(long)]
/// run with debug log level
debug: bool,
}
#[derive(Clone, Subcommand)]
enum Command {
#[cfg(feature = "migrations")]
/// apply scct migrations
Migrate,
#[cfg(feature = "server")]
/// run scct server
Serve {
/// address+port to bind onto
#[arg(short, long, default_value = "127.0.0.1:8424")]
addr: String,
}
}
#[tokio::main]
async fn main() {
let args = Args::parse();
tracing_subscriber::fmt()
.compact()
.with_max_level(if args.debug { tracing::Level::DEBUG } else { tracing::Level::INFO })
.init();
let db = sea_orm::Database::connect(args.db)
.await
.expect("could not connect to scct database");
match args.cmd {
#[cfg(feature = "migrations")]
Command::Migrate => {
use scct_migrations::MigratorTrait;
scct_migrations::Migrator::up(&db, None)
.await
.expect("could not apply scct migrations");
},
#[cfg(feature = "server")]
Command::Serve { addr } =>
scct_server::serve(&addr, db)
.await
.expect("scct server terminated with exception"),
}
}