Expand description
§GeekORM Derive
The geekorm_derive crate is for all pre-processing derive macros used by geekorm at build time.
§Default Features
§Generate Query Methods
By default, the following methods are generated for the struct:
create(): Create Queryselect(): Select Queryall(): Select all rows in a tableinsert(): Insert Queryupdate(): Update Querycount(): Count the number of rows
These are all defined by the geekorm_core::QueryBuilderTrait trait.
use geekorm::prelude::*;
#[derive(Table, Default, serde::Serialize, serde::Deserialize)]
struct Users {
id: PrimaryKeyInteger,
name: String,
age: i32,
occupation: String,
}
// Create a new table query
let create = Users::query_create().build()
.expect("Failed to build CREATE TABLE query");
// Select data from the table
let select = Users::query_select()
.where_eq("name", "geekmasher")
.build()
.expect("Failed to build SELECT query");
// Create a default User
let mut user = Users::default();
// Insert data
let insert = Users::query_insert(&user);
// Update query
user.name = String::from("42ByteLabs");
let update = Users::query_update(&user);§Feature - Automatic New Struct Function
When the new feature is enabled, the following methods are generated for the struct:
PrimaryKey<T>fields are not generatedOption<T>fields are not generated
use geekorm::prelude::*;
#[derive(Table, Default, serde::Serialize, serde::Deserialize)]
struct Users {
id: PrimaryKeyInteger,
name: String,
age: i32,
occupation: String,
country: Option<String>,
}
let user = Users::new(
String::from("geekmasher"),
42,
String::from("Software Developer")
);§Feature - Generated Helper Methods
When the helpers feature is enabled, the following helper methods are generated for the struct:
Note: This is a very experimental feature and might change in the future.
use geekorm::prelude::*;
#[derive(Table, Default, serde::Serialize, serde::Deserialize)]
struct Users {
id: PrimaryKeyInteger,
name: String,
age: i32,
occupation: String,
}
// Select by column helper function
let user = Users::query_select_by_name("geekmasher");
let user = Users::query_select_by_age(42);
let user = Users::query_select_by_occupation("Software Developer");§Feature - Generate Random Data for Column
When using the rand feature, you can automatically generate random strings and use
use geekorm::prelude::*;
#[derive(Table, Default, serde::Serialize, serde::Deserialize)]
pub struct Users {
id: PrimaryKeyInteger,
name: String,
#[geekorm(rand, rand_length = 42, rand_prefix = "token")]
token: String
}
let mut user = Users::new(String::from("geekmasher"));
println!("{}", user.token);
user.regenerate_token();rand attributes:
rand: Sets the String field as a randomly generated valuerand_length: Sets the length of the randomly generated string- Default:
32
- Default:
rand_prefix: Sets a prefix to the randomly generated string- Default: None
§Feature - Generate Hashs for storing passwords
When using the hash feature, you can automatically hash passwords to make sure they are stored securely.
use geekorm::prelude::*;
#[derive(Table, Default, serde::Serialize, serde::Deserialize)]
pub struct Users {
id: PrimaryKeyInteger,
username: String,
#[geekorm(hash)]
password: String,
}
let mut user = Users::new(String::from("geekmasher"), String::from("password"));
// Update password
user.hash_password("newpassword");
// Verify password
if user.check_password("newpassword")? {
println!("Password is correct");
} else {
println!("Password is incorrect");
}
hash attributes:
hashorpassword: Sets the String field as a hashable valuehash_algorithm: Set the algorithm to use- Default:
Pbkdf2
- Default: