use mize::{mize_part, Mize, MizePart, MizePartCreate, MizeResult}; use crate::auth::client::ClientAuth; use generated::spacetime::DbConnection; #[mize_part] #[derive(Default)] pub struct SpacetimePart { mize: Mize, con: Option, } impl MizePartCreate for SpacetimePart {} impl MizePart for SpacetimePart { fn name(&self) -> &'static str { "spacetime" } } impl SpacetimePart { pub fn con(&mut self) -> &mut DbConnection { self.con.as_mut().unwrap() } } pub fn spacetime(mize: &mut Mize) -> MizeResult<()> { let auth = mize.get_part_native::("client_auth")?; let db_url = mize.get_config("spacetime.url")?.value_string()?; let con = DbConnection::builder() .with_token(Some(auth.id_token()?)) .with_database_name("ppc") .with_uri(db_url) //.on_connect(callback) //.on_disconnect(callback) //.on_connect_error(callback) //.with_compression(...) .build()?; con.run_threaded(); mize.register_part(Box::new(SpacetimePart { mize: mize.clone(), con: Some(con), })) }