qdrant_edge/edge/edge_shard/
shard_read.rs1use std::path::Path;
2use std::sync::Arc;
3
4use crate::segment::common::operation_error::OperationResult;
5use crate::segment::data_types::facets::FacetResponse;
6use crate::segment::types::{PointIdType, ScoredPoint};
7use crate::shard::locked_segment::LockedSegment;
8use crate::shard::retrieve::record_internal::RecordInternal;
9
10use crate::edge::read_view::{EdgeShardRead, ReadViewProvider};
11use crate::edge::requests::{
12 CountRequest, FacetRequest, QueryRequest, RetrieveRequest, ScrollRequest, SearchRequest,
13};
14use crate::edge::{EdgeConfig, EdgeShard, ShardInfo};
15
16impl ReadViewProvider for EdgeShard {
20 type Handle = LockedSegment;
21
22 fn read_segments(&self) -> Vec<LockedSegment> {
23 self.segments
24 .read()
25 .non_appendable_then_appendable_segments()
26 .collect()
27 }
28
29 fn config_snapshot(&self) -> Arc<EdgeConfig> {
30 Arc::new(self.config.read().clone())
31 }
32
33 fn search_pool(&self) -> Arc<rayon::ThreadPool> {
34 self.search_pool.clone()
35 }
36
37 fn path(&self) -> &Path {
38 &self.path
39 }
40}
41
42impl EdgeShard {
46 pub fn search(&self, request: SearchRequest) -> OperationResult<Vec<ScoredPoint>> {
48 EdgeShardRead::search(self, request)
49 }
50
51 pub fn query(&self, request: QueryRequest) -> OperationResult<Vec<ScoredPoint>> {
52 EdgeShardRead::query(self, request)
53 }
54
55 pub fn scroll(
56 &self,
57 request: ScrollRequest,
58 ) -> OperationResult<(Vec<RecordInternal>, Option<PointIdType>)> {
59 EdgeShardRead::scroll(self, request)
60 }
61
62 pub fn retrieve(&self, request: RetrieveRequest) -> OperationResult<Vec<RecordInternal>> {
63 EdgeShardRead::retrieve(self, request)
64 }
65
66 pub fn count(&self, request: CountRequest) -> OperationResult<usize> {
67 EdgeShardRead::count(self, request)
68 }
69
70 pub fn facet(&self, request: FacetRequest) -> OperationResult<FacetResponse> {
71 EdgeShardRead::facet(self, request)
72 }
73
74 pub fn info(&self) -> OperationResult<ShardInfo> {
75 EdgeShardRead::info(self)
76 }
77}