holochain_state/
validation_db.rs

1//! # Validation Database Types
2
3use holochain_serialized_bytes::prelude::*;
4use holochain_sqlite::rusqlite::ToSql;
5
6/// The status of a [`DhtOp`](holochain_types::dht_op::DhtOp) in limbo
7#[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq)]
8pub enum ValidationStage {
9    /// Is awaiting to be system validated
10    Pending,
11    /// Is waiting for dependencies so the op can proceed to system validation
12    AwaitingSysDeps,
13    /// Is awaiting to be app validated
14    SysValidated,
15    /// Is waiting for dependencies so the op can proceed to app validation
16    AwaitingAppDeps,
17    /// Is awaiting to be integrated.
18    AwaitingIntegration,
19}
20
21impl ToSql for ValidationStage {
22    fn to_sql(
23        &self,
24    ) -> holochain_sqlite::rusqlite::Result<holochain_sqlite::rusqlite::types::ToSqlOutput> {
25        let stage = match self {
26            ValidationStage::Pending => None,
27            ValidationStage::AwaitingSysDeps => Some(0),
28            ValidationStage::SysValidated => Some(1),
29            ValidationStage::AwaitingAppDeps => Some(2),
30            ValidationStage::AwaitingIntegration => Some(3),
31        };
32        Ok(holochain_sqlite::rusqlite::types::ToSqlOutput::Owned(
33            stage.into(),
34        ))
35    }
36}