83 lines
3.1 KiB
Rust
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()
|
|
}
|
|
}
|