breez_sdk_spark/persist/backend/
prebuilt.rs1use std::sync::Arc;
4
5use macros::async_trait;
6use spark_wallet::{SessionStore, TokenOutputStore, TreeStore};
7
8use crate::{Network, SdkError, persist::Storage};
9
10use super::{ResolvedStores, StorageBackend};
11
12pub struct PrebuiltBackend {
17 storage: Arc<dyn Storage>,
18 tree_store: Option<Arc<dyn TreeStore>>,
19 token_output_store: Option<Arc<dyn TokenOutputStore>>,
20 session_store: Option<Arc<dyn SessionStore>>,
21}
22
23impl PrebuiltBackend {
24 #[must_use]
28 pub fn new(
29 storage: Arc<dyn Storage>,
30 tree_store: Option<Arc<dyn TreeStore>>,
31 token_output_store: Option<Arc<dyn TokenOutputStore>>,
32 session_store: Option<Arc<dyn SessionStore>>,
33 ) -> Self {
34 Self {
35 storage,
36 tree_store,
37 token_output_store,
38 session_store,
39 }
40 }
41}
42
43#[async_trait]
44impl StorageBackend for PrebuiltBackend {
45 async fn create_stores(
46 &self,
47 _network: Network,
48 _identity: Vec<u8>,
49 ) -> Result<Arc<ResolvedStores>, SdkError> {
50 Ok(Arc::new(ResolvedStores {
51 storage: self.storage.clone(),
52 tree_store: self.tree_store.clone(),
53 token_output_store: self.token_output_store.clone(),
54 session_store: self.session_store.clone(),
55 }))
56 }
57}