Skip to content

Commit

Permalink
feat: externalize models from builder
Browse files Browse the repository at this point in the history
  • Loading branch information
vincent-herlemont committed Jun 15, 2024
1 parent c61043f commit dfbbcf3
Show file tree
Hide file tree
Showing 65 changed files with 1,194 additions and 759 deletions.
14 changes: 7 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,10 +50,10 @@ Active development. The API is not stable yet and may change in the future.
- With Tauri: [native_db_tauri_vanilla](https://github.com/vincent-herlemont/native_db_tauri_vanilla)

# Usual API
- [**DatabaseBuilder**](https://docs.rs/native_db/latest/native_db/struct.DatabaseBuilder.html)
- [**define**](https://docs.rs/native_db/latest/native_db/struct.DatabaseBuilder.html#method.define) a model.
- [**create**](https://docs.rs/native_db/latest/native_db/struct.DatabaseBuilder.html#method.create) / [**open**](https://docs.rs/native_db/latest/native_db/struct.DatabaseBuilder.html#method.open) a database.
- [**create_in_memory**](https://docs.rs/native_db/latest/native_db/struct.DatabaseBuilder.html#method.create_in_memory) an in-memory database.
- [**Builder**](https://docs.rs/native_db/latest/native_db/struct.Builder.html)
- [**define**](https://docs.rs/native_db/latest/native_db/struct.Builder.html#method.define) a model.
- [**create**](https://docs.rs/native_db/latest/native_db/struct.Builder.html#method.create) / [**open**](https://docs.rs/native_db/latest/native_db/struct.Builder.html#method.open) a database.
- [**create_in_memory**](https://docs.rs/native_db/latest/native_db/struct.Builder.html#method.create_in_memory) an in-memory database.
- [**Database**](https://docs.rs/native_db/latest/native_db/struct.Database.html)
- [**snapshot**](https://docs.rs/native_db/latest/native_db/struct.Database.html#method.snapshot) the database.
- **rw_transaction** open a read-write transaction.
Expand Down Expand Up @@ -113,12 +113,12 @@ struct Item {
}

fn main() -> Result<(), db_type::Error> {
let mut builder = DatabaseBuilder::new();
let mut models = Models::new();
// Initialize the model
builder.define::<Item>()?;
models.define::<Item>()?;

// Create a database in memory
let mut db = builder.create_in_memory()?;
let mut db = Builder::new().create_in_memory(&models)?;

// Insert data (open a read-write transaction)
let rw = db.rw_transaction().unwrap();
Expand Down
10 changes: 5 additions & 5 deletions benches/overhead_data_size.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@ const ITERATIONS: &'static [(usize, usize)] = &[
(10 * 1024 * 1024, 10),
];

static DATABASE_BUILDER: Lazy<DatabaseBuilder> = Lazy::new(|| {
let mut builder = DatabaseBuilder::new();
builder.define::<Data>().unwrap();
builder
static DATABASE_MODELS: Lazy<Models> = Lazy::new(|| {
let mut models = Models::new();
models.define::<Data>().unwrap();
models
});

fn init_database() -> (redb::Database, Database<'static>) {
Expand All @@ -29,7 +29,7 @@ fn init_database() -> (redb::Database, Database<'static>) {
.create_with_backend(redb_backend)
.unwrap();

let native_db = DATABASE_BUILDER.create_in_memory().unwrap();
let native_db = Builder::new().create_in_memory(&DATABASE_MODELS).unwrap();
(redb_db, native_db)
}

Expand Down
6 changes: 3 additions & 3 deletions native_db_macro/src/model_native_db.rs
Original file line number Diff line number Diff line change
Expand Up @@ -100,10 +100,10 @@ impl ModelNativeDB {
.collect::<Vec<_>>();

quote! {
fn native_db_model() -> native_db::DatabaseModel {
fn native_db_model() -> native_db::Model {
let mut secondary_tables_name = std::collections::HashSet::new();
#(#secondary_keys)*
native_db::DatabaseModel {
native_db::Model {
primary_key: #primary_key,
secondary_keys: secondary_tables_name,
}
Expand Down Expand Up @@ -142,7 +142,7 @@ impl ModelNativeDB {
});

quote! {
fn database_key(&self) -> native_db::db_type::KeyDefinition<native_db::db_type::KeyOptions> {
fn key_definition(&self) -> native_db::db_type::KeyDefinition<native_db::db_type::KeyOptions> {
match self {
#(#insert_secondary_key_def)*
_ => panic!("Unknown key"),
Expand Down
4 changes: 2 additions & 2 deletions native_db_macro/src/native_db.rs
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ pub fn native_db(args: TokenStream, input: TokenStream) -> TokenStream {
#[derive(native_db::KeyAttributes)]
#ast

impl native_db::db_type::Input for #struct_name {
impl native_db::db_type::ToInput for #struct_name {
fn native_db_bincode_encode_to_vec(&self) -> native_db::db_type::Result<Vec<u8>> {
native_db::bincode_encode_to_vec(self)
}
Expand All @@ -60,7 +60,7 @@ pub fn native_db(args: TokenStream, input: TokenStream) -> TokenStream {
#(#keys_enum),*
}

impl native_db::db_type::DatabaseKey<native_db::db_type::KeyOptions> for #keys_enum_name {
impl native_db::db_type::ToKeyDefinition<native_db::db_type::KeyOptions> for #keys_enum_name {
#keys_enum_database_key
}
};
Expand Down
4 changes: 2 additions & 2 deletions src/database.rs
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@ use std::u64;
/// use native_db::*;
///
/// fn main() -> Result<(), db_type::Error> {
/// let builder = DatabaseBuilder::new();
/// let models = Models::new();
/// // Define models ...
/// let db = builder.create_in_memory()?;
/// let db = Builder::new().create_in_memory(&models)?;
/// // Open transactions
/// // Watch data
/// // Create snapshots
Expand Down
Loading

0 comments on commit dfbbcf3

Please sign in to comment.