1
0
mirror of https://gitlab.com/comunic/comunicapiv3 synced 2024-11-22 21:39:21 +00:00

Parse mysql dates

This commit is contained in:
Pierre HUBERT 2020-06-01 09:38:00 +02:00
parent a0f105090d
commit 56cf021f4a
4 changed files with 21 additions and 2 deletions

1
Cargo.lock generated
View File

@ -509,6 +509,7 @@ version = "0.1.0"
dependencies = [ dependencies = [
"actix-rt", "actix-rt",
"actix-web", "actix-web",
"chrono",
"encoding_rs", "encoding_rs",
"futures", "futures",
"mailchecker", "mailchecker",

View File

@ -18,3 +18,4 @@ percent-encoding = "2.1.0"
mailchecker = "3.3.6" mailchecker = "3.3.6"
sha1 = "0.6.0" sha1 = "0.6.0"
rand = "0.7.3" rand = "0.7.3"
chrono = "0.4.11"

View File

@ -9,6 +9,7 @@ use mysql::prelude::Queryable;
use crate::data::config::DatabaseConfig; use crate::data::config::DatabaseConfig;
use crate::data::error::{ExecError, ResultBoxError}; use crate::data::error::{ExecError, ResultBoxError};
use std::collections::HashMap; use std::collections::HashMap;
use chrono::{Utc, TimeZone};
/// Database access helper /// Database access helper
/// ///
@ -213,6 +214,22 @@ impl<'a> RowResult<'a> {
pub fn get_legacy_bool(&self, name: &str) -> ResultBoxError<bool> { pub fn get_legacy_bool(&self, name: &str) -> ResultBoxError<bool> {
Ok(self.get_int64(name)? == 1) 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)))
}
} }

View File

@ -57,7 +57,7 @@ fn exec_get_user_query(query: database::QueryInfo) -> ResultBoxError<User> {
public_note: res.get_optional_str("public_note")?, public_note: res.get_optional_str("public_note")?,
block_comments_on_his_page: res.get_legacy_bool("bloquecommentaire")?, block_comments_on_his_page: res.get_legacy_bool("bloquecommentaire")?,
allow_posts_from_friends: res.get_legacy_bool("autoriser_post_amis")?, 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")?
}) })
}) })
} }