pub struct UniquenessConstraint { /* private fields */ }Expand description
A unified constraint that handles all types of uniqueness validation.
This constraint consolidates the functionality of multiple uniqueness-related constraints:
UniquenessConstraint- Full uniqueness with thresholdDistinctnessConstraint- Distinctness ratio validationUniqueValueRatioConstraint- Values appearing exactly oncePrimaryKeyConstraint- Unique + non-null validation
§Examples
§Full Uniqueness (replacing UniquenessConstraint)
use term_guard::constraints::{UniquenessConstraint, UniquenessType};
// Single column uniqueness
let constraint = UniquenessConstraint::full_uniqueness("user_id", 1.0)?;
// Multi-column uniqueness with threshold
let constraint = UniquenessConstraint::full_uniqueness_multi(
vec!["email", "domain"],
0.95
)?;§Distinctness (replacing DistinctnessConstraint)
use term_guard::constraints::{UniquenessConstraint, Assertion};
let constraint = UniquenessConstraint::distinctness(
vec!["category"],
Assertion::GreaterThan(0.8)
)?;§Primary Key (replacing PrimaryKeyConstraint)
use term_guard::constraints::UniquenessConstraint;
let constraint = UniquenessConstraint::primary_key(
vec!["order_id", "line_item_id"]
)?;Implementations§
Source§impl UniquenessConstraint
impl UniquenessConstraint
Sourcepub fn new<I, S>(
columns: I,
uniqueness_type: UniquenessType,
options: UniquenessOptions,
) -> Result<Self>
pub fn new<I, S>( columns: I, uniqueness_type: UniquenessType, options: UniquenessOptions, ) -> Result<Self>
Sourcepub fn full_uniqueness(
column: impl Into<String>,
threshold: f64,
) -> Result<Self>
pub fn full_uniqueness( column: impl Into<String>, threshold: f64, ) -> Result<Self>
Creates a full uniqueness constraint for a single column.
This replaces UniquenessConstraint::single().
Sourcepub fn full_uniqueness_multi<I, S>(columns: I, threshold: f64) -> Result<Self>
pub fn full_uniqueness_multi<I, S>(columns: I, threshold: f64) -> Result<Self>
Creates a full uniqueness constraint for multiple columns.
This replaces UniquenessConstraint::multiple() and UniquenessConstraint::with_threshold().
Sourcepub fn distinctness<I, S>(columns: I, assertion: Assertion) -> Result<Self>
pub fn distinctness<I, S>(columns: I, assertion: Assertion) -> Result<Self>
Creates a distinctness constraint.
This replaces DistinctnessConstraint::new().
Sourcepub fn unique_value_ratio<I, S>(
columns: I,
assertion: Assertion,
) -> Result<Self>
pub fn unique_value_ratio<I, S>( columns: I, assertion: Assertion, ) -> Result<Self>
Creates a unique value ratio constraint.
This replaces UniqueValueRatioConstraint::new().
Sourcepub fn primary_key<I, S>(columns: I) -> Result<Self>
pub fn primary_key<I, S>(columns: I) -> Result<Self>
Creates a primary key constraint.
This replaces PrimaryKeyConstraint::new().
Sourcepub fn unique_with_nulls<I, S>(
columns: I,
threshold: f64,
null_handling: NullHandling,
) -> Result<Self>
pub fn unique_with_nulls<I, S>( columns: I, threshold: f64, null_handling: NullHandling, ) -> Result<Self>
Creates a uniqueness constraint that allows NULLs.
Sourcepub fn unique_composite<I, S>(
columns: I,
threshold: f64,
null_handling: NullHandling,
case_sensitive: bool,
) -> Result<Self>
pub fn unique_composite<I, S>( columns: I, threshold: f64, null_handling: NullHandling, case_sensitive: bool, ) -> Result<Self>
Creates a composite uniqueness constraint with advanced options.
Sourcepub fn uniqueness_type(&self) -> &UniquenessType
pub fn uniqueness_type(&self) -> &UniquenessType
Returns the uniqueness type.
Sourcepub fn options(&self) -> &UniquenessOptions
pub fn options(&self) -> &UniquenessOptions
Returns the constraint options.
Trait Implementations§
Source§impl Clone for UniquenessConstraint
impl Clone for UniquenessConstraint
Source§fn clone(&self) -> UniquenessConstraint
fn clone(&self) -> UniquenessConstraint
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Constraint for UniquenessConstraint
impl Constraint for UniquenessConstraint
Source§fn evaluate<'life0, 'life1, 'async_trait>(
&'life0 self,
ctx: &'life1 SessionContext,
) -> Pin<Box<dyn Future<Output = Result<ConstraintResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn evaluate<'life0, 'life1, 'async_trait>(
&'life0 self,
ctx: &'life1 SessionContext,
) -> Pin<Box<dyn Future<Output = Result<ConstraintResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn column(&self) -> Option<&str>
fn column(&self) -> Option<&str>
Source§fn metadata(&self) -> ConstraintMetadata
fn metadata(&self) -> ConstraintMetadata
Auto Trait Implementations§
impl Freeze for UniquenessConstraint
impl RefUnwindSafe for UniquenessConstraint
impl Send for UniquenessConstraint
impl Sync for UniquenessConstraint
impl Unpin for UniquenessConstraint
impl UnwindSafe for UniquenessConstraint
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
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