connectorx/transports/
csv_arrow.rs1use crate::destinations::arrow::{ArrowDestination, ArrowDestinationError, ArrowTypeSystem};
4use crate::sources::csv::{CSVSource, CSVSourceError, CSVTypeSystem};
5use crate::typesystem::TypeConversion;
6use chrono::{DateTime, Utc};
7use thiserror::Error;
8
9pub struct CSVArrowTransport;
11
12#[derive(Error, Debug)]
13pub enum CSVArrowTransportError {
14 #[error(transparent)]
15 Source(#[from] CSVSourceError),
16
17 #[error(transparent)]
18 Destination(#[from] ArrowDestinationError),
19
20 #[error(transparent)]
21 ConnectorX(#[from] crate::errors::ConnectorXError),
22}
23
24impl_transport!(
25 name = CSVArrowTransport,
26 error = CSVArrowTransportError,
27 systems = CSVTypeSystem => ArrowTypeSystem,
28 route = CSVSource => ArrowDestination,
29 mappings = {
30 { F64[f64] => Float64[f64] | conversion auto}
31 { I64[i64] => Int64[i64] | conversion auto}
32 { Bool[bool] => Boolean[bool] | conversion auto}
33 { String[String] => LargeUtf8[String] | conversion auto}
34 { DateTime[DateTime<Utc>] => DateTimeTz[DateTime<Utc>] | conversion auto}
35 }
36);