1use crate::Result;
2use clap::Parser;
3use nostr_relay::App;
4use std::path::PathBuf;
5use tracing::info;
6
7#[derive(Debug, Clone, Parser)]
9pub struct RelayOpts {
10 #[arg(
12 short = 'c',
13 value_name = "PATH",
14 default_value = "./config/rnostr.toml"
15 )]
16 pub config: PathBuf,
17
18 #[arg(long, value_name = "BOOL")]
20 pub watch: bool,
21}
22
23#[actix_rt::main]
24pub async fn relay(config: &PathBuf, watch: bool) -> Result<()> {
25 tracing_subscriber::fmt::init();
26 info!("Start relay server");
27
28 let app_data = App::create(Some(config), watch, Some("RNOSTR".to_owned()), None)?;
32 let db = app_data.db.clone();
33 app_data
34 .add_extension(nostr_extensions::Metrics::new())
35 .add_extension(nostr_extensions::Auth::new())
36 .add_extension(nostr_extensions::Ratelimiter::new())
37 .add_extension(nostr_extensions::Count::new(db))
38 .add_extension(nostr_extensions::Search::new())
39 .web_server()?
40 .await?;
41 info!("Relay server shutdown");
42
43 Ok(())
44}