pricer: snapshot

This commit is contained in:
nym21
2025-02-14 19:02:46 +01:00
parent a1006dddb5
commit ed10dccfe2
22 changed files with 692 additions and 410 deletions
+20
View File
@@ -17,6 +17,26 @@ pub enum Index {
Txoutindex,
}
impl Index {
pub fn all() -> [Self; 13] {
[
Self::Addressindex,
Self::Dateindex,
Self::Height,
Self::P2PK33index,
Self::P2PK65index,
Self::P2PKHindex,
Self::P2SHindex,
Self::P2TRindex,
Self::P2WPKHindex,
Self::P2WSHindex,
Self::Txindex,
Self::Txinindex,
Self::Txoutindex,
]
}
}
impl TryFrom<&str> for Index {
type Error = ();
fn try_from(value: &str) -> Result<Self, Self::Error> {
+41 -1
View File
@@ -1,8 +1,10 @@
use std::collections::BTreeMap;
use std::{collections::BTreeMap, fs, io};
use derive_deref::{Deref, DerefMut};
use storable_vec::AnyJsonStorableVec;
use crate::WEBSITE_DEV_PATH;
use super::index::Index;
#[derive(Default, Deref, DerefMut)]
@@ -32,6 +34,44 @@ impl VecIdToIndexToVec {
panic!()
}
}
pub fn generate_dts_file(&self) -> io::Result<()> {
if !fs::exists(WEBSITE_DEV_PATH)? {
return Ok(());
}
let path = format!("{WEBSITE_DEV_PATH}/scripts/types/vecid-to-indexes.d.ts");
let mut contents = Index::all()
.into_iter()
.enumerate()
.map(|(i_of_i, i)| format!("type {} = {};", i, i_of_i))
.collect::<Vec<_>>()
.join("\n");
contents += "\n\ninterface VecIdToIndexes {\n";
self.iter().for_each(|(id, index_to_vec)| {
let indexes = index_to_vec
.keys()
.map(|i| i.to_string())
.collect::<Vec<_>>()
.join(", ");
contents += &format!(
" {}: [{indexes}]\n",
if id.contains("-") {
format!("\"{id}\"")
} else {
id.to_owned()
}
);
});
contents.push('}');
fs::write(path, contents)
}
}
#[derive(Default, Deref, DerefMut)]
+1 -2
View File
@@ -16,12 +16,11 @@ use reqwest::StatusCode;
use crate::{
log_result,
traits::{HeaderMapExtended, ModifiedState, ResponseExtended},
WEBSITE_DEV_PATH,
};
use super::minify::minify_js;
const WEBSITE_DEV_PATH: &str = "../website/";
pub async fn file_handler(headers: HeaderMap, path: extract::Path<String>) -> Response {
any_handler(headers, Some(path))
}
+4 -3
View File
@@ -23,10 +23,9 @@ pub struct AppState {
computer: &'static Computer<STATELESS>,
}
pub async fn main(indexer: Indexer<STATELESS>, computer: Computer<STATELESS>) -> color_eyre::Result<()> {
// pub async fn main(routes: Routes, config: Config) -> color_eyre::Result<()> {
// routes.generate_dts_file();
pub const WEBSITE_DEV_PATH: &str = "../website/";
pub async fn main(indexer: Indexer<STATELESS>, computer: Computer<STATELESS>) -> color_eyre::Result<()> {
let indexer = Box::leak(Box::new(indexer));
let computer = Box::leak(Box::new(computer));
let vecs = Box::leak(Box::new(VecIdToIndexToVec::default()));
@@ -37,6 +36,8 @@ pub async fn main(indexer: Indexer<STATELESS>, computer: Computer<STATELESS>) ->
.into_iter()
.for_each(|vec| vecs.insert(vec));
vecs.generate_dts_file()?;
let state = AppState {
vecs,
indexer,