pub mod balance;
pub mod create;
pub mod deliver;
pub mod pay;
pub use balance::Balance;
pub use create::Create;
pub use deliver::Deliver;
pub use pay::Pay;
use crate::{
aux::Owned,
ext::{Gtin, Money},
};
use super::{Runtime, model};
impl Runtime {
pub fn fulfil(&mut self, cmd: Command) {
use Command as C;
match cmd {
C::Create(cmd) => self.create(cmd),
C::Pay(cmd) => self.pay(cmd),
C::Deliver(cmd) => self.deliver(cmd),
C::Balance(cmd) => println!("{}", self.balance(cmd)),
}
}
}
#[derive(Owned!)]
pub enum Command {
Create(Create),
Pay(Pay),
Deliver(Deliver),
Balance(Balance),
}
#[derive(Owned!)]
pub struct Entity {
pub name: Name,
}
#[derive(Owned!)]
pub struct Concept {
pub name: Name,
pub default_price: Option<Money>,
pub gtin: Option<Gtin>,
}
#[derive(Owned!)]
pub struct Object {
pub name: Name,
pub parent: Option<model::Concept>,
}
pub type Name = String;
pub type NameRef<'a> = &'a str;