use serde::{Deserialize, Serialize};
use crate::ast::{
Attach,
CopyTo,
CreateSchema,
CreateTable,
CreateView,
Describe,
Detach,
DiscardStatement,
DropStatement,
ExplainNode,
Insert,
QueryNode,
ResetVariable,
SetVariable,
Show,
};
use crate::meta::{AstMeta, Raw};
pub type RawStatement = Statement<Raw>;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum Statement<T: AstMeta> {
Attach(Attach<T>),
Detach(Detach<T>),
Explain(ExplainNode<T>),
CopyTo(CopyTo<T>),
Describe(Describe<T>),
Query(QueryNode<T>),
CreateTable(CreateTable<T>),
CreateSchema(CreateSchema<T>),
CreateView(CreateView<T>),
Drop(DropStatement<T>),
Insert(Insert<T>),
SetVariable(SetVariable<T>),
Show(Show<T>),
ResetVariable(ResetVariable<T>),
Discard(DiscardStatement),
}