Skip to main content

headless_lms_credit_registration/use_cases/
preconditions.rs

1//! The `preconditions` phase: moving rows along, or out of, the chain of things that must be true
2//! before we submit.
3
4use headless_lms_models::library::credit_registration::preconditions::{
5    PRECONDITIONS_LIMIT, recompute_preconditions,
6};
7use sqlx::PgPool;
8
9use crate::error::CreditRegistrationResult;
10use crate::workflow::Counts;
11use headless_lms_models::credit_registrations::RegistrationScope;
12
13pub(crate) async fn run(
14    pool: &PgPool,
15    scope: &RegistrationScope,
16) -> CreditRegistrationResult<Counts> {
17    let mut conn = pool.acquire().await?;
18    let moved = recompute_preconditions(&mut conn, scope, PRECONDITIONS_LIMIT).await?;
19    Ok(Counts::processed(moved))
20}