feat: load inventory adapters
This commit is contained in:
parent
532c6410e1
commit
711f9abb6b
3 changed files with 92 additions and 2 deletions
|
@ -2,5 +2,91 @@
|
|||
//
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
use std::sync::Arc;
|
||||
|
||||
use actix_web::web::{self, Data};
|
||||
use cqrs_es::{persist::ViewRepository, EventEnvelope, Query, View};
|
||||
use postgres_es::PostgresCqrs;
|
||||
use sqlx::postgres::PgPool;
|
||||
|
||||
use crate::inventory::{
|
||||
application::services::{InventoryServices, InventoryServicesObj},
|
||||
domain::{
|
||||
category_aggregate::Category, customization_aggregate::Customization,
|
||||
product_aggregate::Product, store_aggregate::Store,
|
||||
},
|
||||
};
|
||||
use crate::settings::Settings;
|
||||
use output::{
|
||||
db::postgres::{
|
||||
category_view, customization_view, product_view, store_view, InventoryDBPostgresAdapter,
|
||||
},
|
||||
full_text_search::meili::InventoryFTSMeili,
|
||||
};
|
||||
|
||||
mod input;
|
||||
mod output;
|
||||
pub mod output;
|
||||
mod types;
|
||||
|
||||
pub fn load_adapters(pool: PgPool, settings: Settings) -> impl FnOnce(&mut web::ServiceConfig) {
|
||||
let db = InventoryDBPostgresAdapter::new(pool.clone());
|
||||
let fts = InventoryFTSMeili::new(&settings.meili.url, &settings.meili.api_key);
|
||||
|
||||
let services: InventoryServicesObj = InventoryServices::new(
|
||||
Arc::new(db.clone()),
|
||||
Arc::new(db.clone()),
|
||||
Arc::new(db.clone()),
|
||||
Arc::new(db.clone()),
|
||||
Arc::new(db.clone()),
|
||||
Arc::new(db.clone()),
|
||||
Arc::new(db.clone()),
|
||||
Arc::new(db.clone()),
|
||||
Arc::new(db.clone()),
|
||||
Arc::new(fts.clone()),
|
||||
);
|
||||
|
||||
let (category_cqrs_exec, category_cqrs_query) =
|
||||
category_view::init_cqrs(db.clone(), services.clone());
|
||||
let (product_cqrs_exec, product_cqrs_query) =
|
||||
product_view::init_cqrs(db.clone(), services.clone());
|
||||
let (customization_cqrs_exec, customization_cqrs_query) =
|
||||
customization_view::init_cqrs(db.clone(), services.clone());
|
||||
let (store_cqrs_exec, store_cqrs_query) = store_view::init_cqrs(db.clone(), services.clone());
|
||||
let inventory_cqrs_exec = types::WebInventoryCqrsExec::new(Arc::new(
|
||||
types::InventoryCqrsExecBuilder::default()
|
||||
.category(category_cqrs_exec)
|
||||
.product(product_cqrs_exec)
|
||||
.customization(customization_cqrs_exec)
|
||||
.store(store_cqrs_exec)
|
||||
.build()
|
||||
.unwrap(),
|
||||
));
|
||||
|
||||
let f = move |cfg: &mut web::ServiceConfig| {
|
||||
// cfg.configure(input::web::load_ctx());
|
||||
cfg.app_data(Data::new(category_cqrs_query.clone()));
|
||||
cfg.app_data(Data::new(product_cqrs_query.clone()));
|
||||
cfg.app_data(Data::new(customization_cqrs_query.clone()));
|
||||
cfg.app_data(Data::new(store_cqrs_query.clone()));
|
||||
cfg.app_data(inventory_cqrs_exec.clone());
|
||||
};
|
||||
|
||||
Box::new(f)
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use crate::db::migrate::*;
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn inventory_load_adapters() {
|
||||
let settings = crate::settings::tests::get_settings().await;
|
||||
settings.create_db().await;
|
||||
|
||||
let db = crate::db::sqlx_postgres::Postgres::init(&settings.database.url).await;
|
||||
db.migrate().await;
|
||||
|
||||
load_adapters(db.pool.clone(), settings.clone());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,6 +2,6 @@
|
|||
//
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
mod adapters;
|
||||
pub mod adapters;
|
||||
mod application;
|
||||
mod domain;
|
||||
|
|
|
@ -16,6 +16,10 @@ pub fn load_adapters(pool: PgPool, settings: Settings) -> impl FnOnce(&mut web::
|
|||
pool.clone(),
|
||||
settings.clone(),
|
||||
))
|
||||
.configure(crate::inventory::adapters::load_adapters(
|
||||
pool.clone(),
|
||||
settings.clone(),
|
||||
))
|
||||
.configure(super::random_string::GenerateRandomString::inject())
|
||||
.configure(super::uuid::GenerateUUID::inject());
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue