use actix_web::HttpResponse;
use serde_json::json;
use sqlx::{Pool, Postgres};
use super::super::catalog_errors::schema_internal_fetch_error;
use super::super::catalog_service_loader_query::load_schema_constraint_rows;
use super::super::presentation::schema_constraints as build_schema_constraints_payload;
use super::super::request_params::NormalizedConstraintQuery;
pub(in super::super) async fn schema_constraints_response(
pool: &Pool<Postgres>,
query: NormalizedConstraintQuery,
) -> HttpResponse {
let rows = match load_schema_constraint_rows(pool, &query).await {
Ok(rows) => rows,
Err(err) => return schema_internal_fetch_error("constraints", &err),
};
HttpResponse::Ok().json(json!({ "constraints": build_schema_constraints_payload(rows) }))
}