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;
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))
}