Skip to content

Commit

Permalink
Extract index operations into index module
Browse files Browse the repository at this point in the history
  • Loading branch information
timvisee committed Jun 26, 2024
1 parent 4c8e34e commit d38f3ac
Show file tree
Hide file tree
Showing 3 changed files with 85 additions and 73 deletions.
80 changes: 80 additions & 0 deletions src/qdrant_client/index.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
use crate::qdrant::{
CreateFieldIndexCollection, DeleteFieldIndexCollection, PointsOperationResponse,
};
use crate::qdrant_client::{Qdrant, QdrantResult};

/// # Index operations
///
/// Manage field and payload indices in collections.
///
/// Documentation: <https://qdrant.tech/documentation/concepts/indexing/>
impl Qdrant {
/// Create payload index in a collection.
///
/// ```no_run
///# use std::collections::HashMap;
///# use qdrant_client::{Qdrant, QdrantError};
/// use qdrant_client::qdrant::{CreateFieldIndexCollectionBuilder, FieldType};
///
///# async fn create_field_index(client: &Qdrant)
///# -> Result<(), QdrantError> {
/// client
/// .create_field_index(
/// CreateFieldIndexCollectionBuilder::new(
/// "my_collection",
/// "city",
/// FieldType::Keyword,
/// ),
/// )
/// .await?;
///# Ok(())
///# }
/// ```
///
/// Documentation: <https://qdrant.tech/documentation/concepts/indexing/#payload-index>
pub async fn create_field_index(
&self,
request: impl Into<CreateFieldIndexCollection>,
) -> QdrantResult<PointsOperationResponse> {
let request = &request.into();

self.with_points_client(|mut client| async move {
let result = client.create_field_index(request.clone()).await?;
Ok(result.into_inner())
})
.await
}

/// Delete payload index from a collection.
///
/// ```no_run
///# use std::collections::HashMap;
///# use qdrant_client::{Qdrant, QdrantError};
/// use qdrant_client::qdrant::DeleteFieldIndexCollectionBuilder;
///
///# async fn create_field_index(client: &Qdrant)
///# -> Result<(), QdrantError> {
/// client
/// .delete_field_index(DeleteFieldIndexCollectionBuilder::new(
/// "my_collection",
/// "city",
/// ))
/// .await?;
///# Ok(())
///# }
/// ```
///
/// Documentation: <https://qdrant.tech/documentation/concepts/indexing/#payload-index>
pub async fn delete_field_index(
&self,
request: impl Into<DeleteFieldIndexCollection>,
) -> QdrantResult<PointsOperationResponse> {
let request = &request.into();

self.with_points_client(|mut client| async move {
let result = client.delete_field_index(request.clone()).await?;
Ok(result.into_inner())
})
.await
}
}
2 changes: 2 additions & 0 deletions src/qdrant_client/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ mod collection;
pub mod config;
mod conversions;
pub mod error;
mod index;
mod points;
mod query;
mod search;
Expand Down Expand Up @@ -67,6 +68,7 @@ pub type QdrantBuilder = QdrantConfig;
/// - [Point operations](Self#point-operations) - manage points, vectors and payloads
/// - [Search operations](Self#search-operations) - search and explore points
/// - [Query operations](Self#query-operations) - query points using universal search
/// - [Index operations](Self#index-operations) - manage field and payload indices
/// - [Snapshot operations](Self#snapshot-operations) - manage instance or collection snapshots
/// - [Shard key operations](Self#sharding-key-operations) - manage shard keys
///
Expand Down
76 changes: 3 additions & 73 deletions src/qdrant_client/points.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,9 @@ use tonic::Status;
use crate::auth::TokenInterceptor;
use crate::qdrant::points_client::PointsClient;
use crate::qdrant::{
ClearPayloadPoints, CountPoints, CountResponse, CreateFieldIndexCollection,
DeleteFieldIndexCollection, DeletePayloadPoints, DeletePointVectors, DeletePoints, GetPoints,
GetResponse, PointsOperationResponse, ScrollPoints, ScrollResponse, SetPayloadPoints,
UpdateBatchPoints, UpdateBatchResponse, UpdatePointVectors, UpsertPoints,
ClearPayloadPoints, CountPoints, CountResponse, DeletePayloadPoints, DeletePointVectors,
DeletePoints, GetPoints, GetResponse, PointsOperationResponse, ScrollPoints, ScrollResponse,
SetPayloadPoints, UpdateBatchPoints, UpdateBatchResponse, UpdatePointVectors, UpsertPoints,
};
use crate::qdrant_client::{Qdrant, QdrantResult};

Expand Down Expand Up @@ -667,73 +666,4 @@ impl Qdrant {
})
.await
}

/// Create payload index in a collection.
///
/// ```no_run
///# use std::collections::HashMap;
///# use qdrant_client::{Qdrant, QdrantError};
/// use qdrant_client::qdrant::{CreateFieldIndexCollectionBuilder, FieldType};
///
///# async fn create_field_index(client: &Qdrant)
///# -> Result<(), QdrantError> {
/// client
/// .create_field_index(
/// CreateFieldIndexCollectionBuilder::new(
/// "my_collection",
/// "city",
/// FieldType::Keyword,
/// ),
/// )
/// .await?;
///# Ok(())
///# }
/// ```
///
/// Documentation: <https://qdrant.tech/documentation/concepts/indexing/#payload-index>
pub async fn create_field_index(
&self,
request: impl Into<CreateFieldIndexCollection>,
) -> QdrantResult<PointsOperationResponse> {
let request = &request.into();

self.with_points_client(|mut client| async move {
let result = client.create_field_index(request.clone()).await?;
Ok(result.into_inner())
})
.await
}

/// Delete payload index from a collection.
///
/// ```no_run
///# use std::collections::HashMap;
///# use qdrant_client::{Qdrant, QdrantError};
/// use qdrant_client::qdrant::DeleteFieldIndexCollectionBuilder;
///
///# async fn create_field_index(client: &Qdrant)
///# -> Result<(), QdrantError> {
/// client
/// .delete_field_index(DeleteFieldIndexCollectionBuilder::new(
/// "my_collection",
/// "city",
/// ))
/// .await?;
///# Ok(())
///# }
/// ```
///
/// Documentation: <https://qdrant.tech/documentation/concepts/indexing/#payload-index>
pub async fn delete_field_index(
&self,
request: impl Into<DeleteFieldIndexCollection>,
) -> QdrantResult<PointsOperationResponse> {
let request = &request.into();

self.with_points_client(|mut client| async move {
let result = client.delete_field_index(request.clone()).await?;
Ok(result.into_inner())
})
.await
}
}

0 comments on commit d38f3ac

Please sign in to comment.