gnostr_relay/
lib.rs

1#[derive(thiserror::Error, Debug)]
2pub enum Error {
3    #[error(transparent)]
4    Db(#[from] nostr_db::Error),
5    #[error(transparent)]
6    Io(#[from] std::io::Error),
7    #[error(transparent)]
8    Config(#[from] config::ConfigError),
9    #[error(transparent)]
10    Notify(#[from] notify::Error),
11    #[error(transparent)]
12    Json(#[from] serde_json::Error),
13    #[error("invalid: {0}")]
14    Invalid(String),
15    #[error("{0}")]
16    Message(String),
17    #[error("{0}")]
18    Str(&'static str),
19}
20
21impl actix_web::ResponseError for Error {}
22
23pub type Result<T, E = Error> = core::result::Result<T, E>;
24
25mod app;
26pub mod duration;
27mod extension;
28mod hash;
29mod list;
30pub mod message;
31mod reader;
32mod server;
33mod session;
34pub mod setting;
35mod subscriber;
36mod writer;
37
38pub use metrics;
39pub use nostr_db as db;
40pub use {
41    app::*, extension::*, list::List, reader::Reader, server::Server, session::Session,
42    setting::Setting, subscriber::Subscriber, writer::Writer,
43};
44
45#[cfg(test)]
46pub fn temp_data_path(p: &str) -> anyhow::Result<tempfile::TempDir> {
47    Ok(tempfile::Builder::new()
48        .prefix(&format!("nostr-relay-test-db-{}", p))
49        .tempdir()?)
50}
51
52#[cfg(test)]
53pub fn create_test_app(db_path: &str) -> anyhow::Result<App> {
54    Ok(App::create(
55        None,
56        false,
57        None,
58        Some(temp_data_path(db_path)?),
59    )?)
60}