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, db) = opt.ns_db()?;
let tbv = self.tb(ctx, opt).await?;
let dbv = self.db(ctx, opt).await?;
let dbcf = dbv.as_ref().changefeed.as_ref();
let tbcf = tbv.as_ref().changefeed.as_ref();
if let Some(cf) = dbcf.or(tbcf) {
if let Some(id) = &self.id {
ctx.tx().lock().await.record_change(
ns,
db,
tbv.name.as_str(),
id.as_ref(),
self.initial.doc.clone(),
self.current.doc.clone(),
cf.store_diff,
);
}
}
Ok(())
}
}