athena_rs 3.26.1

Hyper performant polyglot Database driver
Documentation
//! Request-scoped schema client/pool resolution helpers.
//!
//! This module owns authenticated request-client extraction and pool
//! resolution for schema catalog endpoints.

use actix_web::{HttpRequest, HttpResponse};
use sqlx::{Pool, Postgres};

use crate::AppState;
use crate::api::client_context::{pool_for_client, required_client_name};

use super::super::context_auth::authorize_schema_read;

/// Resolves an authenticated schema client and its Postgres pool.
pub(in super::super) async fn require_schema_client_pool(
    req: &HttpRequest,
    app_state: &AppState,
) -> Result<(String, Pool<Postgres>), HttpResponse> {
    let client_name: String = required_client_name(req)?;
    authorize_schema_read(req, app_state, Some(client_name.as_str())).await?;
    let pool: Pool<Postgres> = pool_for_client(app_state, &client_name).await?;
    Ok((client_name, pool))
}