Skip to main content

EnrichEngine

Struct EnrichEngine 

Source
pub struct EnrichEngine<'a> { /* private fields */ }
Expand description

Enrichment workflow engine.

Implementations§

Source§

impl<'a> EnrichEngine<'a>

Source

pub async fn find_candidates( &self, query: &EnrichQuery, ) -> Result<Vec<EnrichCandidate>>

Find notes that have empty fields matching the query criteria.

Returns a list of candidates with information about which fields need enrichment.

§Arguments
  • query - Query parameters specifying search filter and fields to check
§Example
let engine = Engine::new();

let query = EnrichQuery {
    search: "deck:\"My Deck\" note:Basic".to_string(),
    empty_fields: vec!["Example".to_string(), "Pronunciation".to_string()],
};

let candidates = engine.enrich().find_candidates(&query).await?;
for candidate in &candidates {
    println!("Note {} needs: {:?}", candidate.note_id, candidate.empty_fields);
}
Source

pub async fn update_note( &self, note_id: i64, fields: &HashMap<String, String>, ) -> Result<()>

Update a single note with new field values.

§Arguments
  • note_id - The note to update
  • fields - Map of field name to new value
§Example
let engine = Engine::new();

let mut fields = HashMap::new();
fields.insert("Example".to_string(), "This is an example sentence.".to_string());

engine.enrich().update_note(12345, &fields).await?;
Source

pub async fn update_notes( &self, updates: &[(i64, HashMap<String, String>)], ) -> Result<EnrichReport>

Update multiple notes with new field values.

§Arguments
  • updates - List of (note_id, fields) pairs to update
§Example
let engine = Engine::new();

let updates: Vec<(i64, HashMap<String, String>)> = vec![
    (12345, [("Example".to_string(), "Example 1".to_string())].into_iter().collect()),
    (12346, [("Example".to_string(), "Example 2".to_string())].into_iter().collect()),
];

let report = engine.enrich().update_notes(&updates).await?;
println!("Updated: {}, Failed: {}", report.updated, report.failed);
Source

pub async fn tag_enriched(&self, note_ids: &[i64], tag: &str) -> Result<()>

Add a tag to notes after enrichment.

Useful for marking notes as processed.

§Arguments
  • note_ids - Notes to tag
  • tag - Tag to add
Source

pub async fn pipeline(&self, query: &EnrichQuery) -> Result<EnrichmentPipeline>

Create an enrichment pipeline for batch processing.

The pipeline finds candidates and provides helpers for grouping, updating, and committing changes.

§Arguments
  • query - Query parameters specifying search filter and fields to check
§Example
let engine = Engine::new();

let query = EnrichQuery {
    search: "deck:Japanese".to_string(),
    empty_fields: vec!["Example".to_string(), "Pronunciation".to_string()],
};

let mut pipeline = engine.enrich().pipeline(&query).await?;

// Process by missing field for efficient batching
for (field, candidates) in pipeline.by_missing_field() {
    println!("Field '{}' needs {} notes enriched", field, candidates.len());
}

// Buffer updates - collect IDs first to avoid borrow issues
let note_ids: Vec<i64> = pipeline.candidates().iter().map(|c| c.note_id).collect();
for note_id in note_ids {
    pipeline.update(note_id, [
        ("Example".to_string(), "Generated example".to_string())
    ].into_iter().collect());
}

// Commit all updates
let report = pipeline.commit(&engine).await?;
println!("Updated {} notes", report.updated);

Trait Implementations§

Source§

impl<'a> Debug for EnrichEngine<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'a> Freeze for EnrichEngine<'a>

§

impl<'a> !RefUnwindSafe for EnrichEngine<'a>

§

impl<'a> Send for EnrichEngine<'a>

§

impl<'a> Sync for EnrichEngine<'a>

§

impl<'a> Unpin for EnrichEngine<'a>

§

impl<'a> !UnwindSafe for EnrichEngine<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more