avalanche_types/subnet/rpc/database/manager/
versioned_database.rs

1use std::io::Result;
2
3use semver::Version;
4
5use crate::subnet::rpc::database::{self, BoxedDatabase};
6
7/// ref. <https://pkg.go.dev/github.com/ava-labs/avalanchego/database/manager#VersionedDatabase>
8#[derive(Clone)]
9pub struct VersionedDatabase {
10    pub db: BoxedDatabase,
11    pub version: Version,
12}
13
14impl VersionedDatabase {
15    pub fn new(db: BoxedDatabase, version: Version) -> Self {
16        Self { db, version }
17    }
18}
19
20#[tonic::async_trait]
21impl database::VersionedDatabase for VersionedDatabase {
22    async fn close(&mut self) -> Result<()> {
23        let db = &self.db;
24        match db.close().await {
25            Ok(_) => Ok(()),
26            Err(e) => Err(e),
27        }
28    }
29}