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}