vanikam/src/billing/application/services/mod.rs

83 lines
3.1 KiB
Rust

// SPDX-FileCopyrightText: 2024 Aravinth Manivannan <realaravinth@batsense.net>
//
// SPDX-License-Identifier: AGPL-3.0-or-later
use derive_builder::Builder;
use mockall::predicate::*;
use mockall::*;
pub mod errors;
// services
pub mod add_bill_service;
pub mod add_line_item_service;
pub mod add_store_service;
pub mod compute_bill_total_price_service;
pub mod delete_bill_service;
pub mod delete_line_item_service;
pub mod update_bill_service;
pub mod update_line_item_service;
pub mod update_store_service;
// TODO: 2. reset token number for store_id cronjob
#[automock]
pub trait BillingServicesInterface: Send + Sync {
fn add_bill(&self) -> add_bill_service::AddBillServiceObj;
fn update_bill(&self) -> update_bill_service::UpdateBillServiceObj;
fn delete_bill(&self) -> delete_bill_service::DeleteBillServiceObj;
fn add_store(&self) -> add_store_service::AddStoreServiceObj;
fn update_store(&self) -> update_store_service::UpdateStoreServiceObj;
fn add_line_item(&self) -> add_line_item_service::AddLineItemServiceObj;
fn update_line_item(&self) -> update_line_item_service::UpdateLineItemServiceObj;
fn delete_line_item(&self) -> delete_line_item_service::DeleteLineItemServiceObj;
fn compute_total_price_for_bill(
&self,
) -> compute_bill_total_price_service::ComputeBillTotalPriceBillServiceObj;
}
#[derive(Clone, Builder)]
pub struct BillingServices {
add_bill: add_bill_service::AddBillServiceObj,
add_store: add_store_service::AddStoreServiceObj,
update_store: update_store_service::UpdateStoreServiceObj,
add_line_item: add_line_item_service::AddLineItemServiceObj,
update_line_item: update_line_item_service::UpdateLineItemServiceObj,
delete_line_item: delete_line_item_service::DeleteLineItemServiceObj,
update_bill: update_bill_service::UpdateBillServiceObj,
delete_bill: delete_bill_service::DeleteBillServiceObj,
compute_total_price_for_bill:
compute_bill_total_price_service::ComputeBillTotalPriceBillServiceObj,
}
impl BillingServicesInterface for BillingServices {
fn add_bill(&self) -> add_bill_service::AddBillServiceObj {
self.add_bill.clone()
}
fn update_bill(&self) -> update_bill_service::UpdateBillServiceObj {
self.update_bill.clone()
}
fn delete_bill(&self) -> delete_bill_service::DeleteBillServiceObj {
self.delete_bill.clone()
}
fn add_store(&self) -> add_store_service::AddStoreServiceObj {
self.add_store.clone()
}
fn update_store(&self) -> update_store_service::UpdateStoreServiceObj {
self.update_store.clone()
}
fn add_line_item(&self) -> add_line_item_service::AddLineItemServiceObj {
self.add_line_item.clone()
}
fn update_line_item(&self) -> update_line_item_service::UpdateLineItemServiceObj {
self.update_line_item.clone()
}
fn delete_line_item(&self) -> delete_line_item_service::DeleteLineItemServiceObj {
self.delete_line_item.clone()
}
fn compute_total_price_for_bill(
&self,
) -> compute_bill_total_price_service::ComputeBillTotalPriceBillServiceObj {
self.compute_total_price_for_bill.clone()
}
}