use axum::extract::{Path, State};
use axum::http::HeaderMap;
use axum::Json;
use crate::auth::require_bearer;
use crate::error::AppError;
use crate::state::{AppState, CellRecord};
pub async fn list_cells(
State(state): State<AppState>,
headers: HeaderMap,
) -> Result<Json<Vec<CellRecord>>, AppError> {
require_bearer(&headers, &state.api_token)?;
let map = state.cells.read().await;
Ok(Json(map.values().cloned().collect()))
}
pub async fn get_cell(
State(state): State<AppState>,
headers: HeaderMap,
Path(id): Path<String>,
) -> Result<Json<CellRecord>, AppError> {
require_bearer(&headers, &state.api_token)?;
let map = state.cells.read().await;
map.get(&id)
.cloned()
.map(Json)
.ok_or_else(|| AppError::not_found(format!("cell {id} not found")))
}