1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
use crate::responses::WebResult;
use actix_web::HttpResponse;
use http::StatusCode;
impl From<WebResult> for HttpResponse {
#[must_use]
fn from(res: WebResult) -> Self {
match res {
WebResult::Ok(v) => {
let mut resp_builder = Self::Ok();
if let Some(total) = &v.get("full_count") {
resp_builder.set_header("X-Total-Count", total.to_string());
}
resp_builder.json(&v)
}
WebResult::Err(e) => e
.errors
.iter()
.max_by_key(|e| e.status)
.map_or_else(
|| Self::build(StatusCode::INTERNAL_SERVER_ERROR),
|large_error| Self::build(large_error.status),
)
.json(&e),
}
}
}