1use bee_block as bee;
5use inx::proto;
6
7use crate::{maybe_missing, Raw};
8
9#[derive(Clone, Debug, PartialEq, Eq)]
11pub struct Block {
12 pub block_id: bee::BlockId,
14 pub block: Raw<bee::Block>,
16}
17
18#[derive(Clone, Debug, PartialEq, Eq)]
20pub struct BlockWithMetadata {
21 pub metadata: crate::BlockMetadata,
23 pub block: Raw<bee::Block>,
25}
26
27impl TryFrom<proto::BlockWithMetadata> for BlockWithMetadata {
28 type Error = bee::InxError;
29
30 fn try_from(value: proto::BlockWithMetadata) -> Result<Self, Self::Error> {
31 Ok(BlockWithMetadata {
32 metadata: maybe_missing!(value.metadata).try_into()?,
33 block: maybe_missing!(value.block).data.into(),
34 })
35 }
36}
37
38impl From<BlockWithMetadata> for proto::BlockWithMetadata {
39 fn from(value: BlockWithMetadata) -> Self {
40 Self {
41 metadata: Some(value.metadata.into()),
42 block: Some(value.block.into()),
43 }
44 }
45}
46
47impl TryFrom<proto::Block> for Block {
48 type Error = bee::InxError;
49
50 fn try_from(value: proto::Block) -> Result<Self, Self::Error> {
51 Ok(Block {
52 block_id: maybe_missing!(value.block_id).try_into()?,
53 block: maybe_missing!(value.block).data.into(),
54 })
55 }
56}
57
58impl From<Block> for proto::Block {
59 fn from(value: Block) -> Self {
60 Self {
61 block_id: Some(value.block_id.into()),
62 block: Some(value.block.into()),
63 }
64 }
65}