sqlite_rs/runtime/
mod.rs

1mod btree;
2mod internal_tables;
3mod schema;
4
5use self::btree::SqliteBtree;
6use crate::{
7  header::SqliteHeader, pager::SqlitePager, result::SqliteResult,
8  traits::ParseBytes,
9};
10
11pub use self::schema::SqliteSchema;
12
13#[derive(Debug)]
14pub struct SqliteRuntime {
15  pager: SqlitePager,
16  header: SqliteHeader,
17  btree: SqliteBtree,
18}
19
20impl SqliteRuntime {
21  pub fn start(mut pager: SqlitePager) -> SqliteResult<Self> {
22    let header = if pager.io_mut().is_empty()? {
23      SqliteHeader::default()
24    } else {
25      SqliteHeader::parse_bytes(pager.first()?.raw_data())?
26    };
27
28    let btree = Default::default();
29    Ok(Self {
30      pager,
31      header,
32      btree,
33    })
34  }
35
36  pub fn header(&self) -> &SqliteHeader {
37    &self.header
38  }
39
40  pub fn tables(&self) -> SqliteResult<Vec<SqliteSchema>> {
41    todo!("Show tables not implemented")
42  }
43
44  pub fn pager(&self) -> &SqlitePager {
45    &self.pager
46  }
47
48  pub fn pager_mut(&mut self) -> &mut SqlitePager {
49    &mut self.pager
50  }
51}