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
use std::error::Error; use std::io::Write; use sqlite::{Sqlite, SqliteType}; use sqlite::connection::SqliteValue; use types::{self, FromSql, ToSql, IsNull, HasSqlType}; 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, Time -> String, Timestamp -> String, } expression_impls! { Date -> String, Date -> &'a str, Time -> String, Time -> &'a str, Timestamp -> String, Timestamp -> &'a str, } 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<'a> ToSql<types::Date, Sqlite> for &'a str { fn to_sql<W: Write>(&self, out: &mut W) -> 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 W) -> 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<'a> ToSql<types::Time, Sqlite> for &'a str { fn to_sql<W: Write>(&self, out: &mut W) -> 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 W) -> 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<'a> ToSql<types::Timestamp, Sqlite> for &'a str { fn to_sql<W: Write>(&self, out: &mut W) -> 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 W) -> Result<IsNull, Box<Error+Send+Sync>> { <&str as ToSql<types::Timestamp, Sqlite>>::to_sql(&&**self, out) } }