Skip to main content

grovedb_version/version/
mod.rs

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