mirror of
https://github.com/danbulant/Portfolio
synced 2026-06-14 03:51:27 +00:00
refactor: NaiveDate parsing
This commit is contained in:
parent
12e86d5dff
commit
f054130c12
4 changed files with 20 additions and 3 deletions
|
|
@ -28,6 +28,8 @@ pub enum ServiceError {
|
|||
InternalServerError,
|
||||
#[error("Parrent not found")]
|
||||
ParentNotFound,
|
||||
#[error("Invalid date")]
|
||||
InvalidDate,
|
||||
#[error("Database error")]
|
||||
DbError(#[from] sea_orm::DbErr),
|
||||
#[error("Too many parents")]
|
||||
|
|
@ -92,6 +94,7 @@ impl ServiceError {
|
|||
ServiceError::TooManyApplications => 409,
|
||||
// 500
|
||||
ServiceError::InternalServerError => 500,
|
||||
ServiceError::InvalidDate => 500,
|
||||
ServiceError::ParentNotFound => 500,
|
||||
ServiceError::DbError(_) => 500,
|
||||
ServiceError::UserNotFoundBySessionId => 500,
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ use chrono::NaiveDate;
|
|||
use entity::{candidate, parent};
|
||||
use futures::future;
|
||||
|
||||
use crate::{crypto, models::candidate::{ApplicationDetails}, error::ServiceError};
|
||||
use crate::{crypto, models::candidate::{ApplicationDetails}, error::ServiceError, utils::date::parse_naive_date_from_opt_str};
|
||||
|
||||
use super::{candidate::{CandidateDetails, ParentDetails}, application::ApplicationRow};
|
||||
|
||||
|
|
@ -171,7 +171,7 @@ impl EncryptedCandidateDetails {
|
|||
name: d.0.unwrap_or_default(),
|
||||
surname: d.1.unwrap_or_default(),
|
||||
birthplace: d.2.unwrap_or_default(),
|
||||
birthdate: NaiveDate::parse_from_str(&d.3.unwrap_or_default(), NAIVE_DATE_FMT).unwrap_or(NaiveDate::from_ymd(1, 1, 1)),
|
||||
birthdate: parse_naive_date_from_opt_str(d.3, NAIVE_DATE_FMT)?,
|
||||
address: d.4.unwrap_or_default(),
|
||||
telephone: d.5.unwrap_or_default(),
|
||||
citizenship: d.6.unwrap_or_default(),
|
||||
|
|
|
|||
13
core/src/utils/date.rs
Normal file
13
core/src/utils/date.rs
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
use chrono::NaiveDate;
|
||||
|
||||
use crate::error::ServiceError;
|
||||
|
||||
pub fn parse_naive_date_from_opt_str(date: Option<String>, fmt: &str) -> Result<NaiveDate, ServiceError> {
|
||||
Ok(
|
||||
NaiveDate::parse_from_str(&date.unwrap_or_default(), fmt)
|
||||
.unwrap_or(
|
||||
NaiveDate::from_ymd_opt(1, 1, 1)
|
||||
.ok_or(ServiceError::InvalidDate)?
|
||||
)
|
||||
)
|
||||
}
|
||||
|
|
@ -1,3 +1,4 @@
|
|||
pub mod csv;
|
||||
pub mod filetype;
|
||||
pub mod db;
|
||||
pub mod db;
|
||||
pub mod date;
|
||||
Loading…
Reference in a new issue