haste_health/commands/worker.rs
1use clap::Subcommand;
2// use haste_config::get_config;
3use haste_fhir_operation_error::OperationOutcomeError;
4use haste_worker::{search_indexing, traits::Worker as _};
5
6// use haste_wal_worker::{WALWorkerEnvironmentVariables, wal_worker};
7
8#[derive(Subcommand, Debug)]
9pub enum WorkerCommands {
10 Worker,
11 WalWorker,
12}
13
14pub async fn worker(command: &Option<WorkerCommands>) -> Result<(), OperationOutcomeError> {
15 match command {
16 None | Some(WorkerCommands::Worker) => {
17 let indexing_worker = search_indexing::IndexingWorker::new().await?;
18
19 let handler = indexing_worker.run().await?;
20
21 handler.await.map_err(|e| {
22 OperationOutcomeError::fatal(
23 haste_fhir_model::r4::generated::terminology::IssueType::Exception(None),
24 format!("Worker task failed: {:?}", e),
25 )
26 })?;
27
28 Ok(())
29 }
30 Some(WorkerCommands::WalWorker) => todo!(),
31 }
32}
33
34// async fn create_wal_worker() -> Result<(), Box<dyn std::error::Error>> {
35// let config = get_config::<WALWorkerEnvironmentVariables>("environment".into());
36
37// let connection_url = config
38// .get(WALWorkerEnvironmentVariables::DatabaseURL)
39// .expect(&format!(
40// "'{}' variable not set",
41// String::from(WALWorkerEnvironmentVariables::DatabaseURL)
42// ));
43
44// let slot_name = config
45// .get(WALWorkerEnvironmentVariables::PGSlotName)
46// .expect(&format!(
47// "'{}' variable not set",
48// String::from(WALWorkerEnvironmentVariables::PGSlotName)
49// ));
50// let publication_name = config
51// .get(WALWorkerEnvironmentVariables::PGPublicationName)
52// .expect(&format!(
53// "'{}' variable not set",
54// String::from(WALWorkerEnvironmentVariables::PGPublicationName)
55// ));
56
57// wal_worker(slot_name, publication_name, &connection_url).await;
58
59// Ok(())
60// }