vibesql_executor/insert/
mod.rs

1mod bulk_transfer;
2mod constraints;
3pub mod defaults;
4mod duplicate_key_update;
5mod execution;
6mod foreign_keys;
7mod replace;
8mod row_validator;
9mod validation;
10
11use crate::errors::ExecutorError;
12
13/// Executor for INSERT statements
14pub struct InsertExecutor;
15
16impl InsertExecutor {
17    /// Execute an INSERT statement
18    /// Returns number of rows inserted
19    pub fn execute(
20        db: &mut vibesql_storage::Database,
21        stmt: &vibesql_ast::InsertStmt,
22    ) -> Result<usize, ExecutorError> {
23        execution::execute_insert(db, stmt)
24    }
25
26    /// Execute an INSERT statement with procedural context
27    /// Supports procedural variables in VALUES clause
28    /// Returns number of rows inserted
29    pub fn execute_with_procedural_context(
30        db: &mut vibesql_storage::Database,
31        stmt: &vibesql_ast::InsertStmt,
32        procedural_context: &crate::procedural::ExecutionContext,
33    ) -> Result<usize, ExecutorError> {
34        execution::execute_insert_with_procedural_context(db, stmt, procedural_context)
35    }
36}
37
38/// Execute an INSERT statement with trigger context
39/// This function is used when executing INSERT statements within trigger bodies
40/// to support OLD/NEW pseudo-variable references
41pub fn execute_insert_with_trigger_context(
42    db: &mut vibesql_storage::Database,
43    stmt: &vibesql_ast::InsertStmt,
44    trigger_context: &crate::trigger_execution::TriggerContext,
45) -> Result<usize, ExecutorError> {
46    execution::execute_insert_with_trigger_context(db, stmt, trigger_context)
47}