sea_query/audit/
delete.rs1use super::*;
2use crate::DeleteStatement;
3
4impl AuditTrait for DeleteStatement {
5 fn audit(&self) -> Result<QueryAccessAudit, Error> {
6 let mut requests = Vec::new();
7 let Some(table) = &self.table else {
8 return Err(Error::UnableToParseQuery);
9 };
10 let Some(schema_table) = common::parse_audit_table(table) else {
11 return Err(Error::UnableToParseQuery);
12 };
13 if self.returning.is_some() {
14 requests.push(QueryAccessRequest {
15 access_type: AccessType::Select,
16 schema_table: schema_table.clone(),
17 });
18 }
19 requests.push(QueryAccessRequest {
20 access_type: AccessType::Delete,
21 schema_table,
22 });
23
24 if let Some(with) = &self.with {
25 let mut walker = select::Walker { access: requests };
26 walker.recurse_audit_with_clause(with)?;
27 walker.recurse_audit_with_clause_cleanup(with);
28 requests = walker.access;
29 }
30
31 Ok(QueryAccessAudit { requests })
32 }
33}