1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
use std::io::Write; use std::error::Error; use std::time::SystemTime; use backend::Debug; use types::*; macro_rules! debug_to_sql { ($sql_type:ty, $ty:ty) => { impl ToSql<$sql_type, Debug> for $ty { fn to_sql<W: Write>(&self, _: &mut ToSqlOutput<W, Debug>) -> Result<IsNull, Box<Error+Send+Sync>> { Ok(IsNull::No) } } }; } debug_to_sql!(Bool, bool); debug_to_sql!(Timestamp, SystemTime); #[cfg(feature = "postgres")] mod pg_impls { use super::*; use data_types::*; debug_to_sql!(Timestamp, PgTimestamp); debug_to_sql!(Timestamptz, PgTimestamp); debug_to_sql!(Date, PgDate); debug_to_sql!(Time, PgTime); debug_to_sql!(Interval, PgInterval); } #[cfg(feature = "deprecated-time")] mod deprecated_time_impls { extern crate time; use super::*; use self::time::Timespec; debug_to_sql!(Timestamp, Timespec); } #[cfg(feature = "chrono")] mod chrono_impls { extern crate chrono; use super::*; use self::chrono::{NaiveDateTime, NaiveTime, NaiveDate}; #[cfg(feature = "postgres")] use self::chrono::{DateTime, TimeZone}; debug_to_sql!(Timestamp, NaiveDateTime); debug_to_sql!(Time, NaiveTime); debug_to_sql!(Date, NaiveDate); #[cfg(feature = "postgres")] impl<TZ: TimeZone> ToSql<Timestamptz, Debug> for DateTime<TZ> { fn to_sql<W: Write>(&self, _: &mut ToSqlOutput<W, Debug>) -> Result<IsNull, Box<Error+Send+Sync>> { Ok(IsNull::No) } } }