1use serde::{Deserialize, Serialize};
4
5use cuprate_constants::build::{BUILD, COMMIT};
6use cuprate_rpc_types::{CORE_RPC_VERSION, CORE_RPC_VERSION_MAJOR, CORE_RPC_VERSION_MINOR};
7use cuprate_types::HardFork;
8
9use crate::constants::{MAJOR_VERSION, MINOR_VERSION, PATCH_VERSION, VERSION};
10
11#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)]
13pub struct CupratedVersionInfo {
14 major_version: u8,
16 minor_version: u8,
18 patch_version: u8,
20 rpc_major_version: u32,
22 rpc_minor_version: u32,
24 rpc_version: u32,
26 hardfork: u8,
28 blockchain_db_version: u64,
30 semantic_version: &'static str,
32 build: &'static str,
34 commit: &'static str,
36}
37
38impl CupratedVersionInfo {
39 pub fn new() -> Self {
41 Self {
42 major_version: MAJOR_VERSION.parse().unwrap(),
43 minor_version: MINOR_VERSION.parse().unwrap(),
44 patch_version: PATCH_VERSION.parse().unwrap(),
45 rpc_major_version: CORE_RPC_VERSION_MAJOR,
46 rpc_minor_version: CORE_RPC_VERSION_MINOR,
47 rpc_version: CORE_RPC_VERSION,
48 blockchain_db_version: cuprate_blockchain::DATABASE_VERSION,
49 hardfork: HardFork::LATEST.as_u8(),
50 semantic_version: VERSION,
51 build: BUILD,
52 commit: COMMIT,
53 }
54 }
55}
56
57impl Default for CupratedVersionInfo {
58 fn default() -> Self {
59 Self::new()
60 }
61}
62
63#[cfg(test)]
64mod tests {
65 use super::CupratedVersionInfo;
66
67 #[test]
69 fn new() {
70 CupratedVersionInfo::new();
71 }
72}