athena_rs 3.18.0

Hyper performant polyglot Database driver
Documentation
//! Compatibility adapter for gateway contracts.
//!
//! The portable gateway-domain DTOs and normalization helpers now live in the
//! `athena-gateway` crate. This module keeps the historical import paths stable
//! while `athena_rs` only provides runtime-specific conversions.

use crate::drivers::postgresql::raw_sql::PostgresSqlTransactionMode;

pub use athena_gateway::{
    GATEWAY_DEFERRED_KIND_DELETE, GATEWAY_DEFERRED_KIND_FETCH, GATEWAY_DEFERRED_KIND_INSERT,
    GATEWAY_DEFERRED_KIND_QUERY, GATEWAY_DEFERRED_KIND_RPC, GATEWAY_DEFERRED_KIND_UPDATE,
    GatewayApiRequest, GatewayApiRequestPayload, GatewayDeferredRequest, GatewayDeleteRequest,
    GatewayDeleteResourceIdPlan, GatewayFetchRequest, GatewayInsertRequest, GatewayOperationKind,
    GatewayRequestCondition, GatewayRowsMeta, GatewayRowsResponse, GatewayRpcFilter,
    GatewayRpcFilterOperator, GatewayRpcOrder, GatewayRpcRequest, GatewaySqlExecutionMode,
    GatewaySqlExecutionRequest, GatewaySqlRequest, GatewayUpdateRequest, extract_update_payload,
    normalize_delete_resource_id_column_name, normalize_delete_resource_id_lookup_table,
    normalize_gateway_schema_name, parse_columns_from_body, parse_conditions_from_body,
    plan_delete_resource_id_resolution, qualify_gateway_table_name, schema_name_from_body,
};

pub fn gateway_sql_execution_mode_to_transaction_mode(
    value: GatewaySqlExecutionMode,
) -> PostgresSqlTransactionMode {
    match value {
        GatewaySqlExecutionMode::SingleTransaction => PostgresSqlTransactionMode::SingleTransaction,
        GatewaySqlExecutionMode::PerStatement => PostgresSqlTransactionMode::PerStatement,
    }
}

pub fn postgres_sql_transaction_mode_to_gateway_execution_mode(
    value: PostgresSqlTransactionMode,
) -> GatewaySqlExecutionMode {
    match value {
        PostgresSqlTransactionMode::SingleTransaction => GatewaySqlExecutionMode::SingleTransaction,
        PostgresSqlTransactionMode::PerStatement => GatewaySqlExecutionMode::PerStatement,
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn gateway_sql_execution_mode_maps_to_driver_mode() {
        assert_eq!(
            gateway_sql_execution_mode_to_transaction_mode(GatewaySqlExecutionMode::PerStatement),
            PostgresSqlTransactionMode::PerStatement
        );
    }
}