Skip to main content

nosql_basic_usage/
basic_usage.rs

1use use_nosql::{
2    CacheKey, CacheNamespace, CollectionName, DocumentId, DocumentPath, Embedding, PatchOperation,
3    PatchSet, SimilarityMetric, VectorDimension, VectorId, VectorRecord,
4};
5
6fn main() -> Result<(), Box<dyn std::error::Error>> {
7    let collection = CollectionName::new("customers");
8    let document_id = DocumentId::new("customer_123");
9    let patch = PatchSet::new(vec![PatchOperation::set(
10        DocumentPath::new("profile.display_name"),
11        "Joshua Whalen",
12    )]);
13
14    let key = CacheKey::builder()
15        .namespace(CacheNamespace::new("reviews"))
16        .segment("google-business-profile")
17        .segment("location")
18        .segment("fort-wayne")
19        .segment("summary")
20        .build();
21
22    let record = VectorRecord::new(
23        VectorId::new("review_789_embedding"),
24        Embedding::new(vec![0.012, -0.032, 0.481]),
25    )
26    .with_dimension(VectorDimension::new(3))?
27    .with_similarity_metric(SimilarityMetric::Cosine);
28
29    assert_eq!(collection.as_str(), "customers");
30    assert_eq!(document_id.as_str(), "customer_123");
31    assert_eq!(patch.operations().len(), 1);
32    assert_eq!(
33        key.to_string(),
34        "reviews:google-business-profile:location:fort-wayne:summary"
35    );
36    assert_eq!(record.dimension(), Some(VectorDimension::new(3)));
37
38    Ok(())
39}