1mod routes;
17mod types;
18mod ws;
19
20pub use routes::create_api_router;
21pub use types::{ApiState, WsClientMessage, WsServerMessage};
22
23use std::sync::Arc;
24use tokio::sync::{broadcast, RwLock};
25use vibe_graph_core::{GitChangeSnapshot, SourceCodeGraph};
26
27pub fn create_api_state(graph: SourceCodeGraph) -> Arc<ApiState> {
29 let (tx, _) = broadcast::channel(100);
30 Arc::new(ApiState {
31 graph: Arc::new(RwLock::new(graph)),
32 git_changes: Arc::new(RwLock::new(GitChangeSnapshot::default())),
33 tx,
34 })
35}
36
37pub fn create_api_state_with_changes(
39 graph: SourceCodeGraph,
40 git_changes: GitChangeSnapshot,
41) -> Arc<ApiState> {
42 let (tx, _) = broadcast::channel(100);
43 Arc::new(ApiState {
44 graph: Arc::new(RwLock::new(graph)),
45 git_changes: Arc::new(RwLock::new(git_changes)),
46 tx,
47 })
48}