1use 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
16pub 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}