use crate::error::SqlError;
use crate::reserved::check_identifier;
pub(super) fn extract_name_after_keyword(
parts: &[&str],
keyword: &str,
) -> Option<Result<String, SqlError>> {
let kw_upper = keyword.to_uppercase();
let pos = parts.iter().position(|p| p.to_uppercase() == kw_upper)?;
let mut idx = pos + 1;
if parts.get(idx).map(|s| s.to_uppercase()) == Some("IF".to_string()) {
idx += 1; if parts.get(idx).map(|s| s.to_uppercase()) == Some("NOT".to_string()) {
idx += 1; }
if parts.get(idx).map(|s| s.to_uppercase()) == Some("EXISTS".to_string()) {
idx += 1;
}
}
parts.get(idx).map(|s| check_identifier(s))
}
pub(super) fn extract_name_after_if_exists(
parts: &[&str],
keyword: &str,
) -> Option<Result<String, SqlError>> {
extract_name_after_keyword(parts, keyword)
}
pub(super) fn extract_after_keyword(parts: &[&str], keyword: &str) -> Option<String> {
let kw_upper = keyword.to_uppercase();
let pos = parts.iter().position(|p| p.to_uppercase() == kw_upper)?;
parts.get(pos + 1).map(|s| s.to_string())
}