Crate ergol[−][src]
Expand description
This crate provides the #[ergol]
macro. It allows to persist the data in a
database. For example, you just have to write
use ergol::prelude::*; #[ergol] pub struct User { #[id] pub id: i32, #[unique] pub username: String, pub password: String, pub age: Option<i32>, }
and the #[ergol]
macro will generate most of the code you will need. You’ll
then be able to run code like the following:
// Drop the user table if it exists User::drop_table().execute(&client).await.ok(); // Create the user table User::create_table().execute(&client).await?; // Create a user and save it into the database let mut user: User = User::create("thomas", "pa$$w0rd", Some(28)).save(&client).await?; // Change some of its fields *user.age.as_mut().unwrap() += 1; // Update the user in the database user.save(&client).await?; // Fetch a user by its username thanks to the unique attribute let user: Option<User> = User::get_by_username("thomas", &client).await?; // Select all users let users: Vec<User> = User::select().execute(&client).await?;
See the book for more information.
Re-exports
pub use async_trait; | |
pub use bytes; | |
pub use tokio; | |
pub use tokio_postgres; |
Modules
pg | This module contains the types for postgres. |
prelude | The prelude contains the macros and usefull traits. |
query | This crate contains all the necessary queries. |
relation | This module contains the struct that we use to represent the relationships between linked tables. |
Structs
Ergol | The type that wraps the connection to the database. |
Traits
ToTable | Any type that should be transformed into a table should implement this trait. |
Functions
connect | Connects to the specified database. |
Attribute Macros
ergol |
Derive Macros
PgEnum | Any enum that has no field on any variant can derive |