delta_domain_sdk/
views.rs1use crate::{
6 base_layer::BaseLayer,
7 storage::{
8 Database,
9 DefaultStorage,
10 },
11 views::{
12 domain::DomainStateView,
13 finalized::FinalizedState,
14 sdls::Sdls,
15 verifiables::Verifiables,
16 },
17};
18use base_sdk::core::Shard;
19use domain_runtime::storage::ColumnFamilies;
20use std::num::NonZero;
21use storage::{
22 database::StorageError,
23 key_value::KeyValueStorage,
24};
25
26pub mod domain;
28pub mod finalized;
30pub mod sdls;
32pub mod verifiables;
34
35#[derive(Debug)]
46pub struct Views<S = DefaultStorage>
47where
48 S: KeyValueStorage<ColumnFamilyIdentifier = ColumnFamilies, Error = StorageError>
49 + Send
50 + Sync
51 + 'static,
52{
53 domain_view: DomainStateView<Database<S>>,
54 finalized: FinalizedState<Database<S>, BaseLayer>,
55 sdls: Sdls<Database<S>>,
56 verifiables: Verifiables<Database<S>>,
57}
58
59impl<S> Views<S>
60where
61 S: KeyValueStorage<ColumnFamilyIdentifier = ColumnFamilies, Error = StorageError>
62 + Send
63 + Sync
64 + 'static,
65{
66 pub(crate) fn new(shard: NonZero<Shard>, db: Database<S>, fetcher: BaseLayer) -> Self {
67 Self {
68 domain_view: DomainStateView::new(db.clone()),
69 finalized: FinalizedState::new(shard, db.clone(), fetcher),
70 sdls: Sdls::new(db.clone()),
71 verifiables: Verifiables::new(db),
72 }
73 }
74
75 pub const fn domain_view(&self) -> &DomainStateView<Database<S>> {
77 &self.domain_view
78 }
79
80 pub const fn finalized(&self) -> &FinalizedState<Database<S>, BaseLayer> {
82 &self.finalized
83 }
84
85 pub const fn sdls(&self) -> &Sdls<Database<S>> {
87 &self.sdls
88 }
89
90 pub const fn verifiables(&self) -> &Verifiables<Database<S>> {
92 &self.verifiables
93 }
94}
95
96impl<S> Clone for Views<S>
99where
100 S: KeyValueStorage<ColumnFamilyIdentifier = ColumnFamilies, Error = StorageError>
101 + Send
102 + Sync
103 + 'static,
104{
105 fn clone(&self) -> Self {
106 Self {
107 domain_view: self.domain_view.clone(),
108 finalized: self.finalized.clone(),
109 sdls: self.sdls.clone(),
110 verifiables: self.verifiables.clone(),
111 }
112 }
113}