2022-02-08 10:36:22 +00:00
|
|
|
mod controller;
|
2022-02-26 15:27:16 +00:00
|
|
|
mod database;
|
2022-02-08 10:36:22 +00:00
|
|
|
|
2022-02-26 15:27:16 +00:00
|
|
|
use std::collections::HashMap;
|
|
|
|
use std::sync::Arc;
|
|
|
|
|
|
|
|
use anyhow::Result;
|
2022-02-08 10:36:22 +00:00
|
|
|
use clap::Parser;
|
2022-02-26 15:27:16 +00:00
|
|
|
use parking_lot::RwLock;
|
|
|
|
|
|
|
|
use crate::controller::setup_router;
|
2022-02-08 10:36:22 +00:00
|
|
|
|
2022-02-26 15:27:16 +00:00
|
|
|
pub type CsrfMap = RwLock<HashMap<String, String>>;
|
2022-02-08 10:36:22 +00:00
|
|
|
|
|
|
|
#[derive(Parser)]
|
|
|
|
struct Args {
|
|
|
|
#[clap(short, long)]
|
2022-02-26 15:27:16 +00:00
|
|
|
pub database: String,
|
2022-02-08 10:36:22 +00:00
|
|
|
|
2022-02-26 15:27:16 +00:00
|
|
|
#[clap(short, long)]
|
|
|
|
pub port: u16,
|
|
|
|
}
|
2022-02-08 10:36:22 +00:00
|
|
|
|
2022-02-26 15:27:16 +00:00
|
|
|
fn setup_default_subscriber() -> Result<()> {
|
|
|
|
tracing_subscriber::fmt::init();
|
2022-02-08 10:36:22 +00:00
|
|
|
|
2022-02-26 15:27:16 +00:00
|
|
|
Ok(())
|
2022-02-08 10:36:22 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
#[tokio::main]
|
|
|
|
async fn main() -> Result<()> {
|
|
|
|
let args = Args::parse();
|
|
|
|
|
2022-02-26 15:27:16 +00:00
|
|
|
setup_default_subscriber()?;
|
|
|
|
|
|
|
|
let csrf_map = Arc::new(RwLock::new(HashMap::<String, String>::new()));
|
|
|
|
|
|
|
|
let db = crate::database::setup_connection_and_for_replication(args.database)?;
|
2022-02-08 10:36:22 +00:00
|
|
|
|
2022-02-26 15:27:16 +00:00
|
|
|
let router = setup_router(csrf_map);
|
2022-02-08 10:36:22 +00:00
|
|
|
|
|
|
|
Ok(())
|
|
|
|
}
|