pub struct EdgeNaturalKey { /* private fields */ }Expand description
The natural key a committed symmetric edge update’s surviving row must
be looked up by (ADR-099 B3, second
half). khive-db’s edge_symmetric_absorb_or_update_inplace_statement
pair never trusts a prepare-time-computed target id (see that builder’s
doc comment); a caller rendering this op’s result derives the actual
surviving id by querying graph_edges’s own
UNIQUE(namespace, source_id, target_id, relation) constraint via
KhiveRuntime::get_edge_by_natural_key_including_deleted, which — unlike
list_edges — includes soft-deleted rows: the ADR-039 DO NOTHING absorption
arm can commit leaving the surviving canonical row tombstoned
(khive#1213/#1214), and list_edges would report “not found” for exactly
that row. Looked up strictly after commit.
Implementations§
Source§impl EdgeNaturalKey
impl EdgeNaturalKey
Sourcepub fn canon_source_id(&self) -> Uuid
pub fn canon_source_id(&self) -> Uuid
The canonical source endpoint of the surviving edge.
Sourcepub fn canon_target_id(&self) -> Uuid
pub fn canon_target_id(&self) -> Uuid
The canonical target endpoint of the surviving edge.
Sourcepub fn relation(&self) -> EdgeRelation
pub fn relation(&self) -> EdgeRelation
The surviving edge’s relation.
Trait Implementations§
Source§impl Clone for EdgeNaturalKey
impl Clone for EdgeNaturalKey
Auto Trait Implementations§
impl Freeze for EdgeNaturalKey
impl RefUnwindSafe for EdgeNaturalKey
impl Send for EdgeNaturalKey
impl Sync for EdgeNaturalKey
impl Unpin for EdgeNaturalKey
impl UnsafeUnpin for EdgeNaturalKey
impl UnwindSafe for EdgeNaturalKey
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more