Skip to main content

cala_server/app/
mod.rs

1mod config;
2mod error;
3
4use job::Jobs;
5use sqlx::PgPool;
6
7use cala_ledger::CalaLedger;
8
9pub use config::*;
10pub use error::*;
11
12pub struct CalaApp {
13    _pool: PgPool,
14    ledger: CalaLedger,
15    _jobs: job::Jobs,
16}
17
18impl CalaApp {
19    pub(crate) async fn run(
20        pool: PgPool,
21        config: AppConfig,
22        ledger: CalaLedger,
23    ) -> Result<Self, ApplicationError> {
24        let mut jobs = Jobs::init(
25            job::JobSvcConfig::builder()
26                .pool(pool.clone())
27                .poller_config(config.jobs)
28                .clock(ledger.clock().clone())
29                .build()
30                .expect("JobSvcConfig"),
31        )
32        .await?;
33        jobs.start_poll().await?;
34
35        Ok(Self {
36            _pool: pool,
37            ledger,
38            _jobs: jobs,
39        })
40    }
41
42    pub fn ledger(&self) -> &CalaLedger {
43        &self.ledger
44    }
45}