refactor: extract background task spawning to startup.rs
This commit is contained in:
@@ -28,6 +28,7 @@ mod log_layer;
|
|||||||
mod poller;
|
mod poller;
|
||||||
mod routes;
|
mod routes;
|
||||||
mod scheduler;
|
mod scheduler;
|
||||||
|
mod startup;
|
||||||
mod state;
|
mod state;
|
||||||
mod telemetry;
|
mod telemetry;
|
||||||
mod webhook;
|
mod webhook;
|
||||||
@@ -115,16 +116,11 @@ async fn main() -> anyhow::Result<()> {
|
|||||||
cors_origins: config.cors_allowed_origins.clone(),
|
cors_origins: config.cors_allowed_origins.clone(),
|
||||||
};
|
};
|
||||||
|
|
||||||
let bg_channel_repo_poller = bg_channel_repo.clone();
|
startup::spawn_background_tasks(
|
||||||
let bg_schedule_engine = Arc::clone(&state.schedule_engine);
|
Arc::clone(&state.schedule_engine),
|
||||||
tokio::spawn(scheduler::run_auto_scheduler(bg_schedule_engine, bg_channel_repo, event_tx.clone()));
|
bg_channel_repo,
|
||||||
|
|
||||||
let bg_schedule_engine_poller = Arc::clone(&state.schedule_engine);
|
|
||||||
tokio::spawn(poller::run_broadcast_poller(
|
|
||||||
bg_schedule_engine_poller,
|
|
||||||
bg_channel_repo_poller,
|
|
||||||
event_tx,
|
event_tx,
|
||||||
));
|
);
|
||||||
|
|
||||||
let app = Router::new()
|
let app = Router::new()
|
||||||
.nest("/api/v1", routes::api_v1_router())
|
.nest("/api/v1", routes::api_v1_router())
|
||||||
|
|||||||
24
k-tv-backend/api/src/startup.rs
Normal file
24
k-tv-backend/api/src/startup.rs
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
use std::sync::Arc;
|
||||||
|
|
||||||
|
use domain::{ChannelRepository, DomainEvent, ScheduleEngineService};
|
||||||
|
use tokio::sync::broadcast;
|
||||||
|
|
||||||
|
use crate::{poller, scheduler};
|
||||||
|
|
||||||
|
pub fn spawn_background_tasks(
|
||||||
|
schedule_engine: Arc<ScheduleEngineService>,
|
||||||
|
channel_repo: Arc<dyn ChannelRepository>,
|
||||||
|
event_tx: broadcast::Sender<DomainEvent>,
|
||||||
|
) {
|
||||||
|
let bg_channel_repo = channel_repo.clone();
|
||||||
|
tokio::spawn(scheduler::run_auto_scheduler(
|
||||||
|
Arc::clone(&schedule_engine),
|
||||||
|
bg_channel_repo,
|
||||||
|
event_tx.clone(),
|
||||||
|
));
|
||||||
|
tokio::spawn(poller::run_broadcast_poller(
|
||||||
|
schedule_engine,
|
||||||
|
channel_repo,
|
||||||
|
event_tx,
|
||||||
|
));
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user