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)
        }
    }
}