use arrow::array::{Array, ArrayRef};
use arrow::datatypes::{DataType, TimeUnit};
use crate::datatype::{ColumnError, Datatype, impl_marker_datatype, impl_primitive_datatype};
pub struct Time32Second;
pub struct Time32Millisecond;
pub struct Time64Microsecond;
pub struct Time64Nanosecond;
impl_marker_datatype!(
Time32Second,
arrow::array::Time32SecondArray,
i32,
i32,
DataType::Time32(TimeUnit::Second)
);
impl_marker_datatype!(
Time32Millisecond,
arrow::array::Time32MillisecondArray,
i32,
i32,
DataType::Time32(TimeUnit::Millisecond)
);
impl_marker_datatype!(
Time64Microsecond,
arrow::array::Time64MicrosecondArray,
i64,
i64,
DataType::Time64(TimeUnit::Microsecond)
);
impl_marker_datatype!(
Time64Nanosecond,
arrow::array::Time64NanosecondArray,
i64,
i64,
DataType::Time64(TimeUnit::Nanosecond)
);
impl_primitive_datatype!(Time32Second, i32);
impl_primitive_datatype!(Time32Millisecond, i32);
impl_primitive_datatype!(Time64Microsecond, i64);
impl_primitive_datatype!(Time64Nanosecond, i64);