diesel/type_impls/
date_and_time.rs

1#![allow(dead_code)]
2
3use crate::deserialize::FromSqlRow;
4use crate::expression::AsExpression;
5use std::time::SystemTime;
6
7#[derive(AsExpression, FromSqlRow)]
8#[diesel(foreign_derive)]
9#[diesel(sql_type = crate::sql_types::Timestamp)]
10struct SystemTimeProxy(SystemTime);
11
12#[cfg(feature = "chrono")]
13mod chrono {
14    extern crate chrono;
15    use self::chrono::*;
16    use crate::deserialize::FromSqlRow;
17    use crate::expression::AsExpression;
18    use crate::sql_types::{Date, Interval, Time, Timestamp};
19
20    #[derive(AsExpression, FromSqlRow)]
21    #[diesel(foreign_derive)]
22    #[diesel(sql_type = Date)]
23    struct NaiveDateProxy(NaiveDate);
24
25    #[derive(AsExpression, FromSqlRow)]
26    #[diesel(foreign_derive)]
27    #[diesel(sql_type = Time)]
28    struct NaiveTimeProxy(NaiveTime);
29
30    #[derive(AsExpression, FromSqlRow)]
31    #[diesel(foreign_derive)]
32    #[diesel(sql_type = Timestamp)]
33    #[cfg_attr(
34        feature = "postgres_backend",
35        diesel(sql_type = crate::sql_types::Timestamptz)
36    )]
37    #[cfg_attr(feature = "mysql_backend", diesel(sql_type = crate::sql_types::Datetime))]
38    struct NaiveDateTimeProxy(NaiveDateTime);
39
40    #[derive(FromSqlRow)]
41    #[diesel(foreign_derive)]
42    #[cfg_attr(
43        any(feature = "postgres_backend", feature = "sqlite"),
44        derive(AsExpression)
45    )]
46    #[cfg_attr(
47        feature = "postgres_backend",
48        diesel(sql_type = crate::sql_types::Timestamptz)
49    )]
50    #[cfg_attr(feature = "sqlite", diesel(sql_type = crate::sql_types::TimestamptzSqlite))]
51    struct DateTimeProxy<Tz: TimeZone>(DateTime<Tz>);
52
53    #[derive(AsExpression, FromSqlRow)]
54    #[diesel(foreign_derive)]
55    #[diesel(sql_type = Interval)]
56    struct DurationProxy(Duration);
57}
58
59#[cfg(feature = "time")]
60mod time {
61    use time::{Date as NaiveDate, OffsetDateTime, PrimitiveDateTime, Time as NaiveTime};
62
63    use crate::deserialize::FromSqlRow;
64    use crate::expression::AsExpression;
65    use crate::sql_types::{Date, Time, Timestamp};
66
67    #[derive(AsExpression, FromSqlRow)]
68    #[diesel(foreign_derive)]
69    #[diesel(sql_type = Date)]
70    struct NaiveDateProxy(NaiveDate);
71
72    #[derive(AsExpression, FromSqlRow)]
73    #[diesel(foreign_derive)]
74    #[diesel(sql_type = Time)]
75    struct NaiveTimeProxy(NaiveTime);
76
77    #[derive(AsExpression, FromSqlRow)]
78    #[diesel(foreign_derive)]
79    #[diesel(sql_type = Timestamp)]
80    #[cfg_attr(
81        feature = "postgres_backend",
82        diesel(sql_type = crate::sql_types::Timestamptz)
83    )]
84    #[cfg_attr(feature = "mysql_backend", diesel(sql_type = crate::sql_types::Datetime))]
85    struct NaiveDateTimeProxy(PrimitiveDateTime);
86
87    #[derive(FromSqlRow)]
88    #[diesel(foreign_derive)]
89    #[cfg_attr(
90        any(
91            feature = "postgres_backend",
92            feature = "sqlite",
93            feature = "mysql_backend"
94        ),
95        derive(AsExpression)
96    )]
97    #[cfg_attr(
98        feature = "postgres_backend",
99        diesel(sql_type = crate::sql_types::Timestamptz)
100    )]
101    #[cfg_attr(feature = "sqlite", diesel(sql_type = crate::sql_types::TimestamptzSqlite))]
102    #[cfg_attr(feature = "mysql_backend", diesel(sql_type = crate::sql_types::Datetime))]
103    struct DateTimeProxy(OffsetDateTime);
104}