checkout_core 0.0.147

core traits and structs for the checkout_controller crate
Documentation
use async_trait::async_trait;

use crate::checkout::CheckoutStore;
use crate::error::Error;
use crate::inventory::InventoryController;
use crate::invoice::InvoiceCalculator;
use crate::order::OrderEvents;
use crate::order::OrderStore;
use crate::payment::PaymentProcessor;
use crate::payment::PaymentStore;
use crate::price::PriceCalculator;
use crate::product::ProductResolver;
use crate::shipping::ShippingCalculator;
use crate::transaction::TransactionController;

#[async_trait]
pub trait Context:
    ClientContext
    + InventoryController
    + TransactionController
    + CheckoutStore
    + PaymentStore
    + OrderStore
{
}

#[async_trait]
pub trait ClientContext:
    InvoiceCalculator
    + ProductResolver
    + ShippingCalculator
    + PriceCalculator
    + PaymentProcessor
    + OrderEvents
{
}

#[async_trait]
pub trait ClientContextProvider<'a, C: ClientContext> {
    async fn new_context(&'a self) -> Result<C, Error>;
}