mirror of
https://github.com/sigp/lighthouse.git
synced 2026-03-11 18:04:18 +00:00
> This is currently a WIP and all features are subject to alteration or removal at any time. ## Overview The successor to #2873. Contains the backbone of `beacon.watch` including syncing code, the initial API, and several core database tables. See `watch/README.md` for more information, requirements and usage.
32 lines
1.1 KiB
Rust
32 lines
1.1 KiB
Rust
use crate::block_packing::database::{
|
|
get_block_packing_by_root, get_block_packing_by_slot, WatchBlockPacking,
|
|
};
|
|
use crate::database::{get_connection, PgPool, WatchHash, WatchSlot};
|
|
use crate::server::Error;
|
|
|
|
use axum::{extract::Path, routing::get, Extension, Json, Router};
|
|
use eth2::types::BlockId;
|
|
use std::str::FromStr;
|
|
|
|
pub async fn get_block_packing(
|
|
Path(block_query): Path<String>,
|
|
Extension(pool): Extension<PgPool>,
|
|
) -> Result<Json<Option<WatchBlockPacking>>, Error> {
|
|
let mut conn = get_connection(&pool).map_err(Error::Database)?;
|
|
match BlockId::from_str(&block_query).map_err(|_| Error::BadRequest)? {
|
|
BlockId::Root(root) => Ok(Json(get_block_packing_by_root(
|
|
&mut conn,
|
|
WatchHash::from_hash(root),
|
|
)?)),
|
|
BlockId::Slot(slot) => Ok(Json(get_block_packing_by_slot(
|
|
&mut conn,
|
|
WatchSlot::from_slot(slot),
|
|
)?)),
|
|
_ => Err(Error::BadRequest),
|
|
}
|
|
}
|
|
|
|
pub fn block_packing_routes() -> Router {
|
|
Router::new().route("/v1/blocks/:block/packing", get(get_block_packing))
|
|
}
|