mirror of
https://github.com/bitcoinresearchkit/brk.git
synced 2026-04-29 09:09:58 -07:00
server: add date-modified to datasets
This commit is contained in:
@@ -95,21 +95,27 @@ fn _dataset_handler(
|
||||
Kind::Date => {
|
||||
let datasets = DateMap::<usize>::_read_dir(&route.file_path, &route.serialization);
|
||||
|
||||
process_datasets(headers, kind, &mut chunk, &mut route, query, datasets)?;
|
||||
process_datasets(&headers, kind, &mut chunk, &mut route, query, datasets)?;
|
||||
}
|
||||
Kind::Height => {
|
||||
let datasets =
|
||||
HeightMap::<usize>::_read_dir(&route.file_path, &route.serialization);
|
||||
|
||||
process_datasets(headers, kind, &mut chunk, &mut route, query, datasets)?;
|
||||
process_datasets(&headers, kind, &mut chunk, &mut route, query, datasets)?;
|
||||
}
|
||||
_ => panic!(),
|
||||
};
|
||||
}
|
||||
|
||||
let (date, response) = headers.check_if_modified_since(&route.file_path).unwrap();
|
||||
|
||||
if let Some(response) = response {
|
||||
return Ok(response);
|
||||
}
|
||||
|
||||
let type_name = route.values_type.split("::").last().unwrap();
|
||||
|
||||
let value = match type_name {
|
||||
let mut response = match type_name {
|
||||
"u8" => typed_value_to_response::<u8>(kind, &route, chunk)?,
|
||||
"u16" => typed_value_to_response::<u16>(kind, &route, chunk)?,
|
||||
"u32" => typed_value_to_response::<u32>(kind, &route, chunk)?,
|
||||
@@ -123,7 +129,10 @@ fn _dataset_handler(
|
||||
_ => panic!("Incompatible type: {type_name}"),
|
||||
};
|
||||
|
||||
Ok(value)
|
||||
let headers = response.headers_mut();
|
||||
headers.insert_last_modified(date);
|
||||
|
||||
Ok(response)
|
||||
}
|
||||
|
||||
fn replace_dash_by_underscore(s: &str) -> String {
|
||||
@@ -131,7 +140,7 @@ fn replace_dash_by_underscore(s: &str) -> String {
|
||||
}
|
||||
|
||||
fn process_datasets<ChunkId>(
|
||||
headers: HeaderMap,
|
||||
headers: &HeaderMap,
|
||||
kind: Kind,
|
||||
chunk: &mut Option<Chunk>,
|
||||
route: &mut Route,
|
||||
@@ -159,7 +168,7 @@ where
|
||||
|
||||
let path = path.unwrap();
|
||||
|
||||
route.file_path = path.to_str().unwrap().to_string();
|
||||
route.file_path = path.clone();
|
||||
|
||||
let offset = match kind {
|
||||
Kind::Date => 1,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
use std::{
|
||||
collections::{BTreeMap, HashMap},
|
||||
fs,
|
||||
path::Path,
|
||||
path::{Path, PathBuf},
|
||||
};
|
||||
|
||||
use derive_deref::{Deref, DerefMut};
|
||||
@@ -15,7 +15,7 @@ use super::Paths;
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct Route {
|
||||
pub url_path: String,
|
||||
pub file_path: String,
|
||||
pub file_path: PathBuf,
|
||||
pub values_type: String,
|
||||
pub serialization: Serialization,
|
||||
}
|
||||
@@ -52,7 +52,7 @@ impl Routes {
|
||||
|
||||
let url_path = split_key.iter().join("-");
|
||||
|
||||
let file_path = key.to_owned();
|
||||
let file_path = PathBuf::from(key.to_owned());
|
||||
let values_type = value.to_owned();
|
||||
|
||||
if last == "date" {
|
||||
|
||||
Reference in New Issue
Block a user