When Rust meets PostgreSQL.
See quickstart and examples.
Elephantry is an OMM (object model manager) dedicated to PostgreSQL design to handle from simple to complex queries.
let database_url = std::env::var("DATABASE_URL")
.unwrap_or_else(|_| "postgres://localhost".to_string());
// Connect
let elephantry = elephantry::Pool::new(&database_url)?;
// Simple query
let rows = elephantry.execute("select id from entity")?;
for row in &rows {
let id: i32 = row.get("id");
println!("{id}");
}
// Define entity
#[derive(elephantry::Entity)]
#[elephantry(model = "Model", structure = "Structure")]
struct Entity {
#[elephantry(pk)]
id: u16,
deleted: bool,
}
// Read entities
let entity = elephantry.find_by_pk::<Model>(&elephantry::pk!(id))?;
let entities = elephantry.find_all::<Model>(None)?;
let entities = elephantry.find_where::<Model>("deleted = $1", &[&false], None)?;
// Write entities
elephantry.insert_one::<Model>(&entity)?;
elephantry.update_one::<Model>(&elephantry::pk!{id => entity.id}, &entity)?;
elephantry.delete_one::<Model>(&entity)?;
elephantry.delete_where::<Model>("deleted = $1", &[&true])?;
all-types
— enables all type features (see below);arbitrary
— add support for arbitrary crate;config
— adds support for config layered configuration system;inspect
— include theinspect
module to inspect a database structure;pg14
— enables postgresql 14 features (multirange and newTargetSessionAttrs
);r2d2
— adds support for r2d2 generic connection pool;rocket
— adds support for rocket web framewok;serde
— adds support for de/serialization via serde.
bit
— adds support for bit type;date
— adds support for date type;geo
— adds support for geometric type;json
— adds support for json type;ltree
— adds support for ltree types;multirange
— adds support for multirange type (postgresql >= 14);money
— adds support for money type;net
— adds support for network type;numeric
— adds support for numeric type;time
— adds support for time type;uuid
— adds support for uuid type;xml
— adds support for xml type.
- todo — Todo rocket example app;
- explain — A CLI tool transforms postgresql explain to a graph;
- sav — A simple CRUD application to archive bought item waranty build with rocket;
- out of gafam — Generate RSS feed for GAFAM (youtube, facebook, instagram and twitter) using actix.
- captainstat — Another simple application builds with actix to display statitics;
- oxfeed — A feed reader with an actix API and yew front.
If you want to add your project here, please create a pull request.