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}