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 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
use std::error::Error; use std::io::Write; use sqlite::{Sqlite, SqliteType}; use sqlite::connection::SqliteValue; use types::{self, Date, FromSql, HasSqlType, IsNull, Time, Timestamp, ToSql, ToSqlOutput}; #[cfg(feature = "chrono")] mod chrono; impl HasSqlType<types::Date> for Sqlite { fn metadata(_: &()) -> SqliteType { SqliteType::Text } } impl HasSqlType<types::Time> for Sqlite { fn metadata(_: &()) -> SqliteType { SqliteType::Text } } impl HasSqlType<types::Timestamp> for Sqlite { fn metadata(_: &()) -> SqliteType { SqliteType::Text } } queryable_impls!(Date -> String); queryable_impls!(Time -> String); queryable_impls!(Timestamp -> String); expression_impls!(Date -> String); expression_impls!(Date -> str, unsized); expression_impls!(Time -> String); expression_impls!(Time -> str, unsized); expression_impls!(Timestamp -> String); expression_impls!(Timestamp -> str, unsized); impl FromSql<types::Date, Sqlite> for String { fn from_sql(value: Option<&SqliteValue>) -> Result<Self, Box<Error + Send + Sync>> { FromSql::<types::Text, Sqlite>::from_sql(value) } } impl ToSql<types::Date, Sqlite> for str { fn to_sql<W: Write>( &self, out: &mut ToSqlOutput<W, Sqlite>, ) -> Result<IsNull, Box<Error + Send + Sync>> { ToSql::<types::Text, Sqlite>::to_sql(self, out) } } impl ToSql<types::Date, Sqlite> for String { fn to_sql<W: Write>( &self, out: &mut ToSqlOutput<W, Sqlite>, ) -> Result<IsNull, Box<Error + Send + Sync>> { <&str as ToSql<types::Date, Sqlite>>::to_sql(&&**self, out) } } impl FromSql<types::Time, Sqlite> for String { fn from_sql(value: Option<&SqliteValue>) -> Result<Self, Box<Error + Send + Sync>> { FromSql::<types::Text, Sqlite>::from_sql(value) } } impl ToSql<types::Time, Sqlite> for str { fn to_sql<W: Write>( &self, out: &mut ToSqlOutput<W, Sqlite>, ) -> Result<IsNull, Box<Error + Send + Sync>> { ToSql::<types::Text, Sqlite>::to_sql(self, out) } } impl ToSql<types::Time, Sqlite> for String { fn to_sql<W: Write>( &self, out: &mut ToSqlOutput<W, Sqlite>, ) -> Result<IsNull, Box<Error + Send + Sync>> { <&str as ToSql<types::Time, Sqlite>>::to_sql(&&**self, out) } } impl FromSql<types::Timestamp, Sqlite> for String { fn from_sql(value: Option<&SqliteValue>) -> Result<Self, Box<Error + Send + Sync>> { FromSql::<types::Text, Sqlite>::from_sql(value) } } impl ToSql<types::Timestamp, Sqlite> for str { fn to_sql<W: Write>( &self, out: &mut ToSqlOutput<W, Sqlite>, ) -> Result<IsNull, Box<Error + Send + Sync>> { ToSql::<types::Text, Sqlite>::to_sql(self, out) } } impl ToSql<types::Timestamp, Sqlite> for String { fn to_sql<W: Write>( &self, out: &mut ToSqlOutput<W, Sqlite>, ) -> Result<IsNull, Box<Error + Send + Sync>> { <&str as ToSql<types::Timestamp, Sqlite>>::to_sql(&&**self, out) } }