use crate::{
keywords::Keyword,
parser::{ParseError, Parser},
qualified_name::parse_qualified_name,
QualifiedName, Span, Spanned,
};
#[derive(Debug, Clone)]
pub struct TruncateTable<'a> {
pub truncate_span: Span,
pub table_span: Option<Span>,
pub table_name: QualifiedName<'a>,
}
impl<'a> Spanned for TruncateTable<'a> {
fn span(&self) -> Span {
self.truncate_span
.join_span(&self.table_span)
.join_span(&self.table_name)
}
}
pub(crate) fn parse_truncate_table<'a>(
parser: &mut Parser<'a, '_>,
) -> Result<TruncateTable<'a>, ParseError> {
let truncate_span = parser.consume_keyword(Keyword::TRUNCATE)?;
let table_span = parser.skip_keyword(Keyword::TABLE);
let table_name = parse_qualified_name(parser)?;
Ok(TruncateTable {
truncate_span,
table_span,
table_name,
})
}