mod expression;
mod keywords;
mod literal_value;
mod select;
mod traits;
use std::time::{Duration, Instant};
use traits::SqliteKeyword;
use crate::result::SqliteResult;
#[derive(Debug)]
pub(super) struct SqliteQuery {
start: Instant,
}
impl SqliteQuery {
pub fn run(sql: &str) -> SqliteResult<SqliteQueryOutcome> {
use self::select::SelectStmt;
let timer = Self::timer_start();
let res = SelectStmt::run(sql)?;
dbg!(res);
let elapsed = timer.elapsed().as_millis();
println!("Query elapsed: {elapsed} ms");
todo!()
}
fn timer_start() -> Self {
Self {
start: Instant::now(),
}
}
fn elapsed(self) -> Duration {
Instant::now() - self.start
}
}
#[derive(Debug, Default)]
pub struct SqliteRecord(String);
#[derive(Debug)]
pub struct TokenizedSqliteQuery<Q: SqliteKeyword>(Q);
#[derive(Debug)]
pub enum SqliteQueryOutcome {
Success,
Failure(SqliteDatabaseError),
}
#[derive(Debug)]
pub enum SqliteDatabaseError {
_Todo,
}