use super::*;
#[derive(Serialize, Deserialize)]
pub struct CountRecordsOutput {
pub count: u64,
}
#[derive(Serialize, Deserialize)]
pub struct CountRecordsRequestData {
pub identifier: AtIdentifier,
pub collection: String,
}
pub async fn handle(
State(hydrant): State<Hydrant>,
ExtractXrpc(req): ExtractXrpc<CountRecordsRequestData>,
) -> XrpcResult<Json<CountRecordsOutput>> {
let repo = hydrant
.repos
.resolve(&req.identifier)
.await
.map_err(internal_error)?;
if let Some(reason) = unavailable(&repo).await.map_err(internal_error)? {
return Err(bad_request(reason));
}
let count = repo
.count_records(&req.collection)
.await
.map_err(internal_error)?;
Ok(Json(CountRecordsOutput { count }))
}