refactor: extract background task spawning to startup.rs

This commit is contained in:
2026-03-16 04:37:49 +01:00
parent b25ae95626
commit e7bd66ffdf
2 changed files with 29 additions and 9 deletions

View File

@@ -28,6 +28,7 @@ mod log_layer;
mod poller;
mod routes;
mod scheduler;
mod startup;
mod state;
mod telemetry;
mod webhook;
@@ -115,16 +116,11 @@ async fn main() -> anyhow::Result<()> {
cors_origins: config.cors_allowed_origins.clone(),
};
let bg_channel_repo_poller = bg_channel_repo.clone();
let bg_schedule_engine = Arc::clone(&state.schedule_engine);
tokio::spawn(scheduler::run_auto_scheduler(bg_schedule_engine, bg_channel_repo, event_tx.clone()));
let bg_schedule_engine_poller = Arc::clone(&state.schedule_engine);
tokio::spawn(poller::run_broadcast_poller(
bg_schedule_engine_poller,
bg_channel_repo_poller,
startup::spawn_background_tasks(
Arc::clone(&state.schedule_engine),
bg_channel_repo,
event_tx,
));
);
let app = Router::new()
.nest("/api/v1", routes::api_v1_router())

View 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,
));
}