Tweak schema api
All checks were successful
All checks were successful
This commit is contained in:
@@ -11,7 +11,8 @@ use thiserror::Error;
|
||||
use tracing::{trace, warn};
|
||||
|
||||
pub use pile_dataset::serve::{
|
||||
FieldSpec, FieldsResponse, ItemsResponse, LookupRequest, LookupResponse,
|
||||
ApiValue, FieldSpec, FieldsResponse, ItemsResponse, LookupRequest, LookupResponse,
|
||||
SchemaResponse,
|
||||
};
|
||||
|
||||
#[derive(Debug, Error)]
|
||||
@@ -169,19 +170,19 @@ impl DatasetClient {
|
||||
Ok(FieldResponse { content_type, data })
|
||||
}
|
||||
|
||||
/// `GET /field` — get a field from an item's schema
|
||||
pub async fn get_field(
|
||||
/// `GET /schema/{field}` — get a single schema field value from an item.
|
||||
pub async fn schema_field(
|
||||
&self,
|
||||
source: &str,
|
||||
key: &str,
|
||||
field: &str,
|
||||
) -> Result<FieldResponse, ClientError> {
|
||||
let url = format!("{}/field", self.base_url);
|
||||
trace!(url, source, key, field, "GET /field");
|
||||
let url = format!("{}/schema/{field}", self.base_url);
|
||||
trace!(url, source, key, field, "GET /schema/{field}");
|
||||
let resp = self
|
||||
.client
|
||||
.get(url)
|
||||
.query(&[("source", source), ("key", key), ("field", field)])
|
||||
.query(&[("source", source), ("key", key)])
|
||||
.send()
|
||||
.await?;
|
||||
|
||||
@@ -199,10 +200,29 @@ impl DatasetClient {
|
||||
Ok(FieldResponse { content_type, data })
|
||||
}
|
||||
|
||||
/// `GET /schema` — retrieve this dataset's schema.
|
||||
pub async fn schema(&self) -> Result<FieldsResponse, ClientError> {
|
||||
/// `GET /schema` — get all schema field values for a single item.
|
||||
pub async fn schema(
|
||||
&self,
|
||||
source: &str,
|
||||
key: &str,
|
||||
hidden: bool,
|
||||
) -> Result<SchemaResponse, ClientError> {
|
||||
let url = format!("{}/schema", self.base_url);
|
||||
trace!(url, "GET /schema");
|
||||
trace!(url, source, key, hidden, "GET /schema");
|
||||
let resp = self
|
||||
.client
|
||||
.get(url)
|
||||
.query(&[("source", source), ("key", key)])
|
||||
.query(&[("hidden", hidden)])
|
||||
.send()
|
||||
.await?;
|
||||
check_status(resp).await?.json().await.map_err(Into::into)
|
||||
}
|
||||
|
||||
/// `GET /config/schema` — retrieve this dataset's schema spec.
|
||||
pub async fn config_schema(&self) -> Result<FieldsResponse, ClientError> {
|
||||
let url = format!("{}/config/schema", self.base_url);
|
||||
trace!(url, "GET /config/schema");
|
||||
let resp = self.client.get(url).send().await?;
|
||||
check_status(resp).await?.json().await.map_err(Into::into)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user