use crate::ctx::Context;
use crate::dbs::Options;
use crate::dbs::Statement;
use crate::doc::Document;
use crate::err::Error;
impl Document {
pub async fn process_changefeeds(
&self,
ctx: &Context,
opt: &Options,
_stm: &Statement<'_>,
) -> Result<(), Error> {
if !self.changed() {
return Ok(());
}
let ns = opt.ns()?;
let db = opt.db()?;
let tb = self.tb(ctx, opt).await?;
let txn = ctx.tx();
let cf = txn.get_or_add_db(ns, db, opt.strict).await?;
let dbcf = cf.as_ref().changefeed.as_ref();
let tbcf = tb.as_ref().changefeed.as_ref();
if let Some(cf) = dbcf.or(tbcf) {
if let Some(id) = &self.id {
txn.lock().await.record_change(
ns,
db,
tb.name.as_str(),
id.as_ref(),
self.initial.doc.clone(),
self.current.doc.clone(),
cf.store_diff,
);
}
}
Ok(())
}
}