use crate::database::Database; use crate::merger::Merger; use crate::queryer::Queryer; use crate::validator::Validator; use std::sync::Arc; pub struct Jspg { pub database: Arc, pub validator: Validator, pub queryer: Queryer, pub merger: Merger, } impl Jspg { pub fn new(database_val: &serde_json::Value) -> (Self, crate::drop::Drop) { let (database_instance, drop) = Database::new(database_val); let database = Arc::new(database_instance); let validator = Validator::new(database.clone()); let queryer = Queryer::new(database.clone()); let merger = Merger::new(database.clone()); ( Self { database, validator, queryer, merger, }, drop, ) } }