mirror of
https://gitlab.com/comunic/comunicapiv3
synced 2024-11-22 13:29:21 +00:00
Parse mysql dates
This commit is contained in:
parent
a0f105090d
commit
56cf021f4a
1
Cargo.lock
generated
1
Cargo.lock
generated
@ -509,6 +509,7 @@ version = "0.1.0"
|
||||
dependencies = [
|
||||
"actix-rt",
|
||||
"actix-web",
|
||||
"chrono",
|
||||
"encoding_rs",
|
||||
"futures",
|
||||
"mailchecker",
|
||||
|
@ -18,3 +18,4 @@ percent-encoding = "2.1.0"
|
||||
mailchecker = "3.3.6"
|
||||
sha1 = "0.6.0"
|
||||
rand = "0.7.3"
|
||||
chrono = "0.4.11"
|
@ -9,6 +9,7 @@ use mysql::prelude::Queryable;
|
||||
use crate::data::config::DatabaseConfig;
|
||||
use crate::data::error::{ExecError, ResultBoxError};
|
||||
use std::collections::HashMap;
|
||||
use chrono::{Utc, TimeZone};
|
||||
|
||||
/// Database access helper
|
||||
///
|
||||
@ -213,6 +214,22 @@ impl<'a> RowResult<'a> {
|
||||
pub fn get_legacy_bool(&self, name: &str) -> ResultBoxError<bool> {
|
||||
Ok(self.get_int64(name)? == 1)
|
||||
}
|
||||
|
||||
/// Get a MYSQL date as a timestamp
|
||||
pub fn get_date_as_time(&self, name: &str) -> ResultBoxError<u64> {
|
||||
let value = self.row.get_opt(self.find_col(name)?);
|
||||
let value : Value = value.ok_or(ExecError(format!("Could not find date field {} !", name)))??;
|
||||
|
||||
// Check if it is a date
|
||||
if let Value::Date(year, month, day, hour, minutes, seconds, mic_secs) = value {
|
||||
let dt = Utc.ymd(year as i32, month as u32, day as u32)
|
||||
.and_hms_micro(hour as u32, minutes as u32, seconds as u32, mic_secs);
|
||||
|
||||
return Ok(dt.timestamp() as u64);
|
||||
}
|
||||
|
||||
Err(ExecError::boxed_string(format!("Field {} could not be resolved as a date !", name)))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -57,7 +57,7 @@ fn exec_get_user_query(query: database::QueryInfo) -> ResultBoxError<User> {
|
||||
public_note: res.get_optional_str("public_note")?,
|
||||
block_comments_on_his_page: res.get_legacy_bool("bloquecommentaire")?,
|
||||
allow_posts_from_friends: res.get_legacy_bool("autoriser_post_amis")?,
|
||||
account_creation_time: 10,//TODO : parse date
|
||||
account_creation_time: res.get_date_as_time("date_creation")?
|
||||
})
|
||||
})
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user