buffett_budget/
condition.rs1use chrono::prelude::*;
2use crate::seal::{Seal};
3use buffett_interface::pubkey::Pubkey;
4
5
6
7#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Clone)]
8pub enum Condition {
9
10 Timestamp(DateTime<Utc>, Pubkey),
11
12
13 Signature(Pubkey),
14}
15
16impl Condition {
17
18 pub fn is_satisfied(&self, witness: &Seal, from: &Pubkey) -> bool {
19 match (self, witness) {
20 (Condition::Signature(pubkey), Seal::Signature) => pubkey == from,
21 (Condition::Timestamp(dt, pubkey), Seal::Timestamp(last_time)) => {
22 pubkey == from && dt <= last_time
23 }
24 _ => false,
25 }
26 }
27}