bee_tangle/
storage.rs

1// Copyright 2020-2021 IOTA Stiftung
2// SPDX-License-Identifier: Apache-2.0
3
4use crate::{metadata::MessageMetadata, solid_entry_point::SolidEntryPoint};
5
6use bee_message::{
7    milestone::{Milestone, MilestoneIndex},
8    Message, MessageId,
9};
10
11use bee_storage::{
12    access::{Fetch, Insert},
13    backend,
14};
15
16/// A blanket-implemented helper trait for the storage layer.
17pub trait StorageBackend:
18    backend::StorageBackend
19    + Insert<MessageId, Message>
20    + Insert<MessageId, MessageMetadata>
21    + Insert<(MessageId, MessageId), ()>
22    + Insert<MilestoneIndex, Milestone>
23    + Insert<SolidEntryPoint, MilestoneIndex>
24    + Fetch<MessageId, Message>
25    + Fetch<MessageId, MessageMetadata>
26    + Fetch<MessageId, Vec<MessageId>>
27    + Fetch<MilestoneIndex, Milestone>
28{
29}
30
31impl<T> StorageBackend for T where
32    T: backend::StorageBackend
33        + Insert<MessageId, Message>
34        + Insert<MessageId, MessageMetadata>
35        + Insert<(MessageId, MessageId), ()>
36        + Insert<MilestoneIndex, Milestone>
37        + Insert<SolidEntryPoint, MilestoneIndex>
38        + Fetch<MessageId, Message>
39        + Fetch<MessageId, MessageMetadata>
40        + Fetch<MessageId, Vec<MessageId>>
41        + Fetch<MilestoneIndex, Milestone>
42{
43}