A Wrapped / Replay like for teal.fm and rocksky.app (currently on hiatus)
3
fork

Configure Feed

Select the types of activity you want to include in your feed.

server start

Mia 5296286e 5643fce5

+35
+1
Cargo.lock
··· 1281 1281 "tempfile", 1282 1282 "tokio", 1283 1283 "tokio-util", 1284 + "tower", 1284 1285 "tower-http", 1285 1286 "tracing", 1286 1287 "tracing-subscriber",
+1
Cargo.toml
··· 19 19 tempfile = "3.23.0" 20 20 tokio = { version = "1.42", features = ["full"] } 21 21 tokio-util = { version = "0.7.17", features = ["compat"] } 22 + tower = "0.5.2" 22 23 tower-http = { version = "0.6", features = ["cors", "trace"] } 23 24 tracing = "0.1" 24 25 tracing-subscriber = { version = "0.3", features = ["env-filter"] }
+2
src/main.rs
··· 5 5 mod config; 6 6 mod ingest; 7 7 mod mbz; 8 + mod server; 8 9 9 10 #[tokio::main] 10 11 async fn main() -> eyre::Result<()> { ··· 21 22 22 23 let mut tasks = tokio::task::JoinSet::new(); 23 24 25 + tasks.spawn(server::start_server(ddb.clone(), config.port)); 24 26 tasks.spawn(ingest::jetstream(ddb.clone(), config.jetstream, None)); 25 27 tasks.spawn(mbz::start_replication(ddb, config.mb_dump, config.mb_agent)); 26 28
+31
src/server/mod.rs
··· 1 + use axum::Router; 2 + use duckdb::DuckdbConnectionManager; 3 + use std::net::SocketAddr; 4 + use std::sync::Arc; 5 + use tokio::net::TcpListener; 6 + use tower_http::cors::{AllowHeaders, AllowOrigin, CorsLayer}; 7 + use tower_http::trace::TraceLayer; 8 + 9 + #[derive(Clone)] 10 + pub struct GlobalState { 11 + pub db: Arc<DuckdbConnectionManager>, 12 + } 13 + 14 + pub async fn start_server(db: Arc<DuckdbConnectionManager>, port: u16) -> eyre::Result<()> { 15 + let cors = CorsLayer::new() 16 + .allow_headers(AllowHeaders::any()) 17 + .allow_origin(AllowOrigin::any()); 18 + 19 + let mw = tower::ServiceBuilder::new() 20 + .layer(TraceLayer::new_for_http()) 21 + .layer(cors); 22 + 23 + let app = Router::new().layer(mw).with_state(GlobalState { db }); 24 + 25 + let addr = SocketAddr::from(([0, 0, 0, 0], port)); 26 + let listener = TcpListener::bind(addr).await?; 27 + 28 + axum::serve(listener, app).await?; 29 + 30 + Ok(()) 31 + }