Skip to main content

azure_sdk_cosmos/responses/
get_database_response.rs

1use crate::database::Database;
2use crate::from_headers::*;
3use crate::ResourceQuota;
4use azure_sdk_core::errors::AzureError;
5use azure_sdk_core::{etag_from_headers, session_token_from_headers};
6use chrono::{DateTime, Utc};
7use hyper::header::HeaderMap;
8
9#[derive(Debug, Clone)]
10pub struct GetDatabaseResponse {
11    pub database: Database,
12    pub charge: f64,
13    pub activity_id: uuid::Uuid,
14    pub session_token: String,
15    pub etag: String,
16    pub last_state_change: DateTime<Utc>,
17    pub resource_quota: Vec<ResourceQuota>,
18    pub resource_usage: Vec<ResourceQuota>,
19    pub schema_version: String,
20    pub service_version: String,
21    pub gateway_version: String,
22}
23
24impl std::convert::TryFrom<(&HeaderMap, &[u8])> for GetDatabaseResponse {
25    type Error = AzureError;
26    fn try_from(value: (&HeaderMap, &[u8])) -> Result<Self, Self::Error> {
27        let headers = value.0;
28        let body = value.1;
29
30        debug!("get database response == {}", std::str::from_utf8(body)?);
31
32        Ok(Self {
33            database: serde_json::from_slice(body)?,
34            charge: request_charge_from_headers(headers)?,
35            activity_id: activity_id_from_headers(headers)?,
36            session_token: session_token_from_headers(headers)?,
37            etag: etag_from_headers(headers)?,
38            last_state_change: last_state_change_from_headers(headers)?,
39            resource_quota: resource_quota_from_headers(headers)?,
40            resource_usage: resource_usage_from_headers(headers)?,
41            schema_version: schema_version_from_headers(headers)?.to_owned(),
42            service_version: service_version_from_headers(headers)?.to_owned(),
43            gateway_version: gateway_version_from_headers(headers)?.to_owned(),
44        })
45    }
46}