athena_rs 3.22.1

Hyper performant polyglot Database driver
Documentation
//! `/schema` catalog loader helpers.
//!
//! This module owns service-layer loading for the schema overview endpoint.

use sqlx::{Pool, Postgres};

use super::super::service::{
    SchemaColumnRecord, SchemaRelationRecord, fetch_columns, fetch_relations,
};

/// Relation/column rows loaded for `/schema` overview payload composition.
pub(in super::super) struct SchemaOverviewRows {
    /// Relations discovered for one schema.
    pub(in super::super) relations: Vec<SchemaRelationRecord>,
    /// Columns discovered for one schema.
    pub(in super::super) columns: Vec<SchemaColumnRecord>,
}

/// Loads relation and column rows for one validated schema name.
pub(in super::super) async fn load_schema_overview_rows(
    pool: &Pool<Postgres>,
    schema_name: &str,
) -> Result<SchemaOverviewRows, sqlx::Error> {
    let relations = fetch_relations(pool, Some(schema_name), false).await?;
    let columns = fetch_columns(pool, Some(schema_name), None, false).await?;

    Ok(SchemaOverviewRows { relations, columns })
}