clippies resolved, formatted, readme fixed
This commit is contained in:
parent
149a7a7110
commit
5e2536e207
5 changed files with 13 additions and 12 deletions
|
|
@ -1,9 +1,8 @@
|
||||||
# Sqlighte.Rs
|
# Sqlighte.Rs
|
||||||
|
|
||||||
* rust version of https://gitlab.com/sander-hautvast/sqlighter
|
* rust version of https://gitlab.com/sander-hautvast/sqlighter
|
||||||
* still work in progress
|
|
||||||
|
|
||||||
Creating a database will be as simple as:
|
Creating a database is as simple as:
|
||||||
```rust
|
```rust
|
||||||
fn test_build() -> Result<(), Error> {
|
fn test_build() -> Result<(), Error> {
|
||||||
let mut builder = Builder::new();
|
let mut builder = Builder::new();
|
||||||
|
|
@ -18,7 +17,7 @@ fn test_build() -> Result<(), Error> {
|
||||||
let database: Database = builder.into();
|
let database: Database = builder.into();
|
||||||
let file = File::create("foo.db")?;
|
let file = File::create("foo.db")?;
|
||||||
let writer = BufWriter::new(file);
|
let writer = BufWriter::new(file);
|
||||||
write(database, writer)?;
|
write_sqlite(database, writer)?;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
@ -37,8 +37,7 @@ impl DatabaseBuilder {
|
||||||
self.current_page.key = record.rowid; //clone?
|
self.current_page.key = record.rowid; //clone?
|
||||||
let bytes: Vec<u8> = record.into();
|
let bytes: Vec<u8> = record.into();
|
||||||
self.current_page.put_bytes_bw(&bytes);
|
self.current_page.put_bytes_bw(&bytes);
|
||||||
self.current_page
|
self.current_page.put_u16(self.current_page.bw_position);
|
||||||
.put_u16(self.current_page.bw_position as u16);
|
|
||||||
self.n_records_on_current_page += 1;
|
self.n_records_on_current_page += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ impl From<DatabaseBuilder> for Database {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn write<W: Write>(database: Database, mut writer: BufWriter<W>) -> Result<(), Error> {
|
pub fn write_sqlite<W: Write>(database: Database, mut writer: BufWriter<W>) -> Result<(), Error> {
|
||||||
let mut current_top_layer = database.leaf_pages;
|
let mut current_top_layer = database.leaf_pages;
|
||||||
let mut n_pages = current_top_layer.len();
|
let mut n_pages = current_top_layer.len();
|
||||||
while current_top_layer.len() > 1 {
|
while current_top_layer.len() > 1 {
|
||||||
|
|
@ -48,7 +48,11 @@ pub fn write<W: Write>(database: Database, mut writer: BufWriter<W>) -> Result<(
|
||||||
set_childrefs_write(table_root_page, &mut writer, 3)
|
set_childrefs_write(table_root_page, &mut writer, 3)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn set_childrefs_write<W: Write>(page: &mut Page, writer: &mut BufWriter<W>, mut page_counter: u32) -> Result<(), Error> {
|
fn set_childrefs_write<W: Write>(
|
||||||
|
page: &mut Page,
|
||||||
|
writer: &mut BufWriter<W>,
|
||||||
|
mut page_counter: u32,
|
||||||
|
) -> Result<(), Error> {
|
||||||
if let PageType::Interior = page.page_type {
|
if let PageType::Interior = page.page_type {
|
||||||
page.fw_position = page::POSITION_CELL_COUNT;
|
page.fw_position = page::POSITION_CELL_COUNT;
|
||||||
page.put_u16((page.children.len() - 1) as u16);
|
page.put_u16((page.children.len() - 1) as u16);
|
||||||
|
|
@ -67,7 +71,7 @@ fn set_childrefs_write<W: Write>(page: &mut Page, writer: &mut BufWriter<W>, mut
|
||||||
|
|
||||||
writer.write_all(&page.data)?;
|
writer.write_all(&page.data)?;
|
||||||
|
|
||||||
for child in page.children.iter_mut() {
|
for child in &mut page.children {
|
||||||
set_childrefs_write(child, writer, page_counter)?;
|
set_childrefs_write(child, writer, page_counter)?;
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|
@ -213,4 +217,3 @@ pub const TABLE_LEAF_PAGE: u8 = 0x0d;
|
||||||
pub const TABLE_INTERIOR_PAGE: u8 = 0x05;
|
pub const TABLE_INTERIOR_PAGE: u8 = 0x05;
|
||||||
const INDEX_LEAF_PAGE: u8 = 0x0a;
|
const INDEX_LEAF_PAGE: u8 = 0x0a;
|
||||||
const INDEX_INTERIOR_PAGE: u8 = 0x02;
|
const INDEX_INTERIOR_PAGE: u8 = 0x02;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ mod varint;
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use crate::builder::DatabaseBuilder;
|
use crate::builder::DatabaseBuilder;
|
||||||
use crate::database::{write, Database};
|
use crate::database::{write_sqlite, Database};
|
||||||
use crate::record::Record;
|
use crate::record::Record;
|
||||||
use crate::values;
|
use crate::values;
|
||||||
use std::fs::File;
|
use std::fs::File;
|
||||||
|
|
@ -28,7 +28,7 @@ mod tests {
|
||||||
let database: Database = builder.into();
|
let database: Database = builder.into();
|
||||||
let file = File::create("foo.db")?;
|
let file = File::create("foo.db")?;
|
||||||
let writer = BufWriter::new(file);
|
let writer = BufWriter::new(file);
|
||||||
write(database, writer)?;
|
write_sqlite(database, writer)?;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
use crate::database::SchemaRecord;
|
use crate::database::SchemaRecord;
|
||||||
use crate::values::{Value, integer, string};
|
use crate::values::{integer, string, Value};
|
||||||
use crate::varint;
|
use crate::varint;
|
||||||
|
|
||||||
pub struct Record {
|
pub struct Record {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue