use super::{Span, ValueIndex};
use crate::lifecycle::SearchTier;
use crate::property_graph::query::plan::SearchCallId;
use crate::property_graph::query::runtime::WorkCounters;
use crate::property_graph::{EntityKind, GraphGeneration, GraphRevision, NodeId, RelId};
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct Receipt {
pub item_index: u32,
pub deleted: bool,
pub receipt: crate::property_graph::staging::ItemReceipt,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum ListKind {
Query,
Empty,
Bool,
I64,
F64,
String,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct Key {
pub kind: EntityKind,
pub namespace: Span,
pub value: Span,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct Property {
pub name: Span,
pub value: ValueIndex,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct Node {
pub id: NodeId,
pub revision: GraphRevision,
pub generation: GraphGeneration,
pub key: Option<Key>,
pub labels: Span,
pub properties: Span,
pub text: Option<Span>,
pub vector: Option<Span>,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct Relationship {
pub id: RelId,
pub revision: GraphRevision,
pub generation: GraphGeneration,
pub key: Option<Key>,
pub source: NodeId,
pub target: NodeId,
pub relationship_type: Span,
pub properties: Span,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum SearchKind {
Vector,
Lexical,
Hybrid,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum ActualTier {
Exact,
Scan,
Graph,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum ScorePrecision {
NotApplicable,
Original,
Quantized,
Mixed,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum CandidateCoverage {
Exact,
Approximate,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum LegState {
NotRequested,
Nonempty,
NoIndexedPopulation,
NoEligibleMembers,
NoQueryMatches,
}
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct SearchReport {
pub call: SearchCallId,
pub generation: GraphGeneration,
pub kind: SearchKind,
pub requested_tier: Option<SearchTier>,
pub actual_tier: Option<ActualTier>,
pub precision: ScorePrecision,
pub coverage: CandidateCoverage,
pub vector_leg: LegState,
pub lexical_leg: LegState,
pub document_epoch: Option<u64>,
pub query_epoch: Option<u64>,
pub tokenizer_epoch: Option<u64>,
pub effective_alpha_bits: u64,
pub normalization_version: u32,
pub rules_version: u32,
pub candidate_count: u64,
pub cross_scored_count: u64,
pub fallback_count: u64,
pub cross_score_complete: bool,
pub work: WorkCounters,
}