47 lines
1.1 KiB
Rust
47 lines
1.1 KiB
Rust
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<DbConnection>,
|
|
}
|
|
|
|
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::<ClientAuth>("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),
|
|
}))
|
|
}
|