Skip to main content

objects/object/
state_status.rs

1// SPDX-License-Identifier: Apache-2.0
2//! Lifecycle status for states.
3
4use serde::{Deserialize, Serialize};
5
6/// Lifecycle status of a state.
7#[derive(Clone, Copy, Debug, PartialEq, Eq, Default, Serialize, Deserialize)]
8pub enum Status {
9    /// Draft state, freely rewritable.
10    #[default]
11    Draft,
12    /// Published state, history is frozen.
13    Published,
14}
15
16impl Status {
17    /// Convert to byte for serialization.
18    pub fn to_byte(&self) -> u8 {
19        match self {
20            Status::Draft => 0,
21            Status::Published => 1,
22        }
23    }
24
25    /// Parse from byte.
26    pub fn from_byte(b: u8) -> Option<Self> {
27        match b {
28            0 => Some(Status::Draft),
29            1 => Some(Status::Published),
30            _ => None,
31        }
32    }
33}