make query optional
This commit is contained in:
parent
f576dedcb9
commit
aa820b29c2
@ -17,7 +17,7 @@ use argon2::{
|
|||||||
password_hash::{rand_core::OsRng, PasswordHash, SaltString},
|
password_hash::{rand_core::OsRng, PasswordHash, SaltString},
|
||||||
Argon2, PasswordHasher, PasswordVerifier,
|
Argon2, PasswordHasher, PasswordVerifier,
|
||||||
};
|
};
|
||||||
use chrono::{DateTime, Duration, Local, NaiveDateTime, TimeZone, Utc};
|
use chrono::{DateTime, Datelike, Duration, Local, NaiveDateTime, TimeZone, Utc};
|
||||||
use regex::Regex;
|
use regex::Regex;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use simplelog::*;
|
use simplelog::*;
|
||||||
@ -79,16 +79,34 @@ pub struct ImportObj {
|
|||||||
date: String,
|
date: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize, Clone)]
|
||||||
pub struct ProgramObj {
|
pub struct ProgramObj {
|
||||||
#[serde(deserialize_with = "naive_date_time_from_str")]
|
#[serde(default = "def_after", deserialize_with = "naive_date_time_from_str")]
|
||||||
start_after: Option<NaiveDateTime>,
|
start_after: NaiveDateTime,
|
||||||
#[serde(deserialize_with = "naive_date_time_from_str")]
|
#[serde(default = "def_before", deserialize_with = "naive_date_time_from_str")]
|
||||||
start_before: Option<NaiveDateTime>,
|
start_before: NaiveDateTime,
|
||||||
|
}
|
||||||
|
|
||||||
|
fn def_after() -> NaiveDateTime {
|
||||||
|
let today = Utc::now();
|
||||||
|
|
||||||
|
chrono::Local
|
||||||
|
.ymd(today.year(), today.month(), today.day())
|
||||||
|
.and_hms(0, 0, 0)
|
||||||
|
.naive_local()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn def_before() -> NaiveDateTime {
|
||||||
|
let today = Utc::now();
|
||||||
|
|
||||||
|
chrono::Local
|
||||||
|
.ymd(today.year(), today.month(), today.day())
|
||||||
|
.and_hms_milli(23, 59, 59, 999)
|
||||||
|
.naive_local()
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize)]
|
#[derive(Debug, Serialize)]
|
||||||
struct ProgramTtem {
|
struct ProgramItem {
|
||||||
source: String,
|
source: String,
|
||||||
start: String,
|
start: String,
|
||||||
r#in: f64,
|
r#in: f64,
|
||||||
@ -848,16 +866,8 @@ async fn get_program(
|
|||||||
let start_sec = config.playlist.start_sec.unwrap();
|
let start_sec = config.playlist.start_sec.unwrap();
|
||||||
let mut days = 0;
|
let mut days = 0;
|
||||||
let mut program = vec![];
|
let mut program = vec![];
|
||||||
|
let after = obj.start_after;
|
||||||
let after = match obj.start_after {
|
let before = obj.start_before;
|
||||||
Some(d) => d,
|
|
||||||
None => Utc::now().naive_utc(),
|
|
||||||
};
|
|
||||||
|
|
||||||
let before = match obj.start_before {
|
|
||||||
Some(d) => d,
|
|
||||||
None => Utc::now().naive_utc(),
|
|
||||||
};
|
|
||||||
|
|
||||||
if start_sec > time_to_sec(&after.format("%H:%M:%S").to_string()) {
|
if start_sec > time_to_sec(&after.format("%H:%M:%S").to_string()) {
|
||||||
days = 1;
|
days = 1;
|
||||||
@ -879,7 +889,7 @@ async fn get_program(
|
|||||||
let playlist = match read_playlist(*id, date.clone()).await {
|
let playlist = match read_playlist(*id, date.clone()).await {
|
||||||
Ok(p) => p,
|
Ok(p) => p,
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
error!("Error in PLaylist from {date}: {e}");
|
error!("Error in Playlist from {date}: {e}");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -895,7 +905,7 @@ async fn get_program(
|
|||||||
None => item.source,
|
None => item.source,
|
||||||
};
|
};
|
||||||
|
|
||||||
let p_item = ProgramTtem {
|
let p_item = ProgramItem {
|
||||||
source,
|
source,
|
||||||
start: start.format("%Y-%m-%d %H:%M:%S%.3f%:z").to_string(),
|
start: start.format("%Y-%m-%d %H:%M:%S%.3f%:z").to_string(),
|
||||||
r#in: item.seek,
|
r#in: item.seek,
|
||||||
|
@ -238,24 +238,20 @@ pub fn local_utc_offset() -> i32 {
|
|||||||
utc_offset
|
utc_offset
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn naive_date_time_from_str<'de, D>(deserializer: D) -> Result<Option<NaiveDateTime>, D::Error>
|
pub fn naive_date_time_from_str<'de, D>(deserializer: D) -> Result<NaiveDateTime, D::Error>
|
||||||
where
|
where
|
||||||
D: Deserializer<'de>,
|
D: Deserializer<'de>,
|
||||||
{
|
{
|
||||||
let s: String = Deserialize::deserialize(deserializer)?;
|
let s: String = Deserialize::deserialize(deserializer)?;
|
||||||
|
|
||||||
match NaiveDateTime::parse_from_str(&s, "%Y-%m-%dT%H:%M:%S") {
|
match NaiveDateTime::parse_from_str(&s, "%Y-%m-%dT%H:%M:%S") {
|
||||||
Ok(date_time) => Ok(Some(date_time)),
|
Ok(date_time) => Ok(date_time),
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
if e.kind() == ParseErrorKind::TooShort {
|
if e.kind() == ParseErrorKind::TooShort {
|
||||||
match NaiveDateTime::parse_from_str(&format!("{s}T00:00:00"), "%Y-%m-%dT%H:%M:%S") {
|
NaiveDateTime::parse_from_str(&format!("{s}T00:00:00"), "%Y-%m-%dT%H:%M:%S")
|
||||||
Ok(date_time) => Ok(Some(date_time)),
|
.map_err(de::Error::custom)
|
||||||
Err(e) => Err(de::Error::custom(e)),
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
match NaiveDateTime::parse_from_str(&s, "%Y-%m-%dT%H:%M:%S%#z") {
|
NaiveDateTime::parse_from_str(&s, "%Y-%m-%dT%H:%M:%S%#z").map_err(de::Error::custom)
|
||||||
Ok(date_time) => Ok(Some(date_time)),
|
|
||||||
Err(_) => Err(de::Error::custom(e)),
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user