• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

payjoin / rust-payjoin / 13655876030

04 Mar 2025 02:26PM UTC coverage: 79.709% (-0.02%) from 79.725%
13655876030

Pull #560

github

web-flow
Merge 81f4bc826 into 2761db178
Pull Request #560: Instantiate `v2::Reciver` only after data persistence is complete

19 of 24 new or added lines in 3 files covered. (79.17%)

157 existing lines in 6 files now uncovered.

4545 of 5702 relevant lines covered (79.71%)

809.82 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

94.23
/payjoin-cli/src/db/v2.rs
1
use bitcoincore_rpc::jsonrpc::serde_json;
2
use payjoin::receive::v2::Receiver;
3
use payjoin::send::v2::Sender;
4
use sled::{IVec, Tree};
5
use url::Url;
6

7
use super::*;
8

9
impl Database {
10
    pub(crate) fn insert_recv_session(&self, session: Receiver) -> Result<()> {
1✔
11
        let recv_tree = self.0.open_tree("recv_sessions")?;
1✔
12
        let key = &session.id();
1✔
13
        let value = serde_json::to_string(&session).map_err(Error::Serialize)?;
1✔
14
        recv_tree.insert(key.as_slice(), IVec::from(value.as_str()))?;
1✔
15
        recv_tree.flush()?;
1✔
16
        Ok(())
1✔
17
    }
1✔
18

19
    pub(crate) fn get_recv_sessions(&self) -> Result<Vec<Receiver>> {
1✔
20
        let recv_tree = self.0.open_tree("recv_sessions")?;
1✔
21
        let mut sessions = Vec::new();
1✔
22
        for item in recv_tree.iter() {
1✔
23
            let (_, value) = item?;
1✔
24
            let session: Receiver = serde_json::from_slice(&value).map_err(Error::Deserialize)?;
1✔
25
            sessions.push(session);
1✔
26
        }
27
        Ok(sessions)
1✔
28
    }
1✔
29

30
    pub(crate) fn clear_recv_session(&self) -> Result<()> {
1✔
31
        let recv_tree: Tree = self.0.open_tree("recv_sessions")?;
1✔
32
        recv_tree.clear()?;
1✔
33
        recv_tree.flush()?;
1✔
34
        Ok(())
1✔
35
    }
1✔
36

37
    pub(crate) fn insert_send_session(&self, session: &mut Sender, pj_url: &Url) -> Result<()> {
1✔
38
        let send_tree: Tree = self.0.open_tree("send_sessions")?;
1✔
39
        let value = serde_json::to_string(session).map_err(Error::Serialize)?;
1✔
40
        send_tree.insert(pj_url.to_string(), IVec::from(value.as_str()))?;
1✔
41
        send_tree.flush()?;
1✔
42
        Ok(())
1✔
43
    }
1✔
44

45
    pub(crate) fn get_send_sessions(&self) -> Result<Vec<Sender>> {
1✔
46
        let send_tree: Tree = self.0.open_tree("send_sessions")?;
1✔
47
        let mut sessions = Vec::new();
1✔
48
        for item in send_tree.iter() {
1✔
49
            let (_, value) = item?;
×
50
            let session: Sender = serde_json::from_slice(&value).map_err(Error::Deserialize)?;
×
UNCOV
51
            sessions.push(session);
×
52
        }
53
        Ok(sessions)
1✔
54
    }
1✔
55

56
    pub(crate) fn get_send_session(&self, pj_url: &Url) -> Result<Option<Sender>> {
2✔
57
        let send_tree = self.0.open_tree("send_sessions")?;
2✔
58
        if let Some(val) = send_tree.get(pj_url.to_string())? {
2✔
59
            let session: Sender = serde_json::from_slice(&val).map_err(Error::Deserialize)?;
1✔
60
            Ok(Some(session))
1✔
61
        } else {
62
            Ok(None)
1✔
63
        }
64
    }
2✔
65

66
    pub(crate) fn clear_send_session(&self, pj_url: &Url) -> Result<()> {
1✔
67
        let send_tree: Tree = self.0.open_tree("send_sessions")?;
1✔
68
        send_tree.remove(pj_url.to_string())?;
1✔
69
        send_tree.flush()?;
1✔
70
        Ok(())
1✔
71
    }
1✔
72
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc