diesel/type_impls/
date_and_time.rs1#![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}