#[cfg(not(feature = "std"))]
use alloc::{boxed::Box, vec::Vec};
#[cfg(feature = "serde")]
use serde::{Deserialize, Serialize};
#[cfg(feature = "visitor")]
use sqlparser_derive::{Visit, VisitMut};
use super::{
Expr, FromTable, Ident, InsertAliases, MysqlInsertPriority, ObjectName, OnInsert, OrderByExpr,
Query, SelectItem, SqliteOnConflict, TableWithJoins,
};
#[derive(Debug, Clone, PartialEq, PartialOrd, Eq, Ord, Hash)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "visitor", derive(Visit, VisitMut))]
pub struct Insert {
pub or: Option<SqliteOnConflict>,
pub ignore: bool,
pub into: bool,
#[cfg_attr(feature = "visitor", visit(with = "visit_relation"))]
pub table_name: ObjectName,
pub table_alias: Option<Ident>,
pub columns: Vec<Ident>,
pub overwrite: bool,
pub source: Option<Box<Query>>,
pub partitioned: Option<Vec<Expr>>,
pub after_columns: Vec<Ident>,
pub table: bool,
pub on: Option<OnInsert>,
pub returning: Option<Vec<SelectItem>>,
pub replace_into: bool,
pub priority: Option<MysqlInsertPriority>,
pub insert_alias: Option<InsertAliases>,
}
#[derive(Debug, Clone, PartialEq, PartialOrd, Eq, Ord, Hash)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "visitor", derive(Visit, VisitMut))]
pub struct Delete {
pub tables: Vec<ObjectName>,
pub from: FromTable,
pub using: Option<Vec<TableWithJoins>>,
pub selection: Option<Expr>,
pub returning: Option<Vec<SelectItem>>,
pub order_by: Vec<OrderByExpr>,
pub limit: Option<Expr>,
}