headless_lms_models::library::global_stats

Function get_completion_stats_by_email_domain

Source
pub async fn get_completion_stats_by_email_domain(
    conn: &mut PgConnection,
    year: Option<i32>,
) -> ModelResult<Vec<DomainCompletionStats>>
Expand description

Produces a summary of course completions grouped by user’s email domain.

The query deduplicates multiple completions of the same (user, course module) by:

  1. Preferring any completion that has a registration (exists in course_module_completion_registered_to_study_registries)
  2. If no registered completion is found, it picks the completion with the newest created_at timestamp

The query aggregates the following counts and sums by email domain:

  • total_completions - Number of unique completions (after deduplication) for the domain
  • unique_users - Number of distinct users (by user_id) in those completions
  • registered_completion_percentage - Fraction of completions that are registered (multiplied by 100)
  • registered_completions - Number of completions with a matching registration
  • not_registered_completions - Number of completions without a matching registration
  • users_with_some_registered_completions - Count of distinct users with at least one registered completion
  • users_with_some_unregistered_completions - Count of distinct users with at least one unregistered completion
  • registered_ects_credits - Total ECTS credits for registered completions
  • not_registered_ects_credits - Total ECTS credits for unregistered completions

§Arguments

  • year - Optional year to filter completions by