Skip to main content

haste_health/commands/
worker.rs

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