cognite/api/data_organization/
datasets.rs

1use serde::Serialize;
2
3use crate::api::resource::*;
4use crate::dto::{
5    data_organization::datasets::*,
6    items::{Cursor, ItemsVec},
7};
8use crate::error::Result;
9use crate::{Filter, IdentityList, Patch};
10
11/// API resource for data sets.
12pub type DataSetsResource = Resource<DataSet>;
13
14impl WithBasePath for DataSetsResource {
15    const BASE_PATH: &'static str = "datasets";
16}
17
18impl Create<AddDataSet, DataSet> for DataSetsResource {}
19impl<R> RetrieveWithIgnoreUnknownIds<IdentityList<R>, DataSet> for DataSetsResource
20where
21    IdentityList<R>: Serialize,
22    R: Send + Sync,
23{
24}
25impl Update<Patch<PatchDataSet>, DataSet> for DataSetsResource {}
26impl FilterItems<DataSetFilter, DataSet> for DataSetsResource {}
27
28impl DataSetsResource {
29    /// Calculate the total number of data sets in the project matching the given filter
30    ///
31    /// # Arguments
32    ///
33    /// * `filter` - Optional filter.
34    pub async fn count(&self, filter: DataSetFilter) -> Result<DataSetsCount> {
35        let query = Filter::<DataSetFilter>::new(filter, None, None);
36        let result: ItemsVec<DataSetsCount, Cursor> =
37            self.api_client.post("datasets/aggregate", &query).await?;
38        Ok(result.items.into_iter().next().unwrap())
39    }
40}