grovedb_version/version/
mod.rs

1pub mod grovedb_versions;
2pub mod merk_versions;
3pub mod v1;
4pub mod v2;
5
6pub use versioned_feature_core::*;
7
8use crate::version::{
9    grovedb_versions::GroveDBVersions, merk_versions::MerkVersions, v1::GROVE_V1, v2::GROVE_V2,
10};
11
12#[derive(Clone, Debug, Default)]
13pub struct GroveVersion {
14    pub protocol_version: u32,
15    pub grovedb_versions: GroveDBVersions,
16    pub merk_versions: MerkVersions,
17}
18
19impl GroveVersion {
20    pub fn first<'a>() -> &'a Self {
21        GROVE_VERSIONS
22            .first()
23            .expect("expected to have a platform version")
24    }
25
26    pub fn latest<'a>() -> &'a Self {
27        GROVE_VERSIONS
28            .last()
29            .expect("expected to have a platform version")
30    }
31}
32
33pub const GROVE_VERSIONS: &[GroveVersion] = &[GROVE_V1, GROVE_V2];