use crate::utils::structs::Context; use tokio::runtime; use db::Noose; use pipeline::Pipeline; pub mod db; pub mod pipeline; // mod sled; mod sqlite; pub mod user; pub fn start(context: Context) { let rt = runtime::Runtime::new().unwrap(); rt.block_on(async move { let pipeline_pubsub = context.pubsub.clone(); let pipeline_config = context.config.clone(); let db_pubsub = context.pubsub.clone(); let pipeline_handle = tokio::task::spawn(async move { let mut pipeline = Pipeline::new(pipeline_pubsub, pipeline_config); pipeline.start().await.unwrap(); }); let sqlite_writer_handle = tokio::task::spawn(async move { let mut db_writer = sqlite::SqliteDb::new().await; db_writer.start(db_pubsub).await.unwrap(); }); sqlite_writer_handle.await.unwrap(); pipeline_handle.await.unwrap(); }); }