| Crates.io | rusticx |
| lib.rs | rusticx |
| version | 0.1.3 |
| created_at | 2025-05-12 06:41:16.193893+00 |
| updated_at | 2025-05-14 08:54:34.653185+00 |
| description | A lightweight, intuitive ORM library for Rust |
| homepage | |
| repository | https://github.com/TarunVishwakarma1/rustix-orm |
| max_upload_size | |
| id | 1670080 |
| size | 146,177 |
rusticx is a lightweight, intuitive ORM (Object-Relational Mapping) library for Rust, designed to simplify database interactions across various SQL databases, including PostgreSQL, MySQL, and SQLite. It provides a unified interface for managing database connections, executing queries, and handling transactions.
tokio, allowing for non-blocking database interactions. (in development)serde.To use rusticx, add it to your Cargo.toml:
cargo add rusticx
You can enable specific database support by adding features in your Cargo.toml:
[dependencies.rusticx]
version = "0.1.3"
features = ["postgres"]
use rusticx::{Connection, DatabaseType};
let conn = Connection::new("postgresql://user:password@localhost/dbname")?;
use rusticx::model::SQLModel;
[derive(Debug, Serialize, Deserialize)]
struct User {
id: Option<i32>,
name: String,
email: String,
}
impl SQLModel for User {
fn table_name() -> String {
"users".to_string()
}
fn primary_key_field() -> String {
"id".to_string()
}
fn primary_key_value(&self) -> Option<i32> {
self.id
}
fn set_primary_key(&mut self, id: i32) {
self.id = Some(id);
}
// Implement other required methods...
}
Usage with rustic_derive
use rusticx::model::SQLModel;
use rusticx_derive::Model;
#[derive(Debug, Serialize, Deserialize, Model)]
#[model(table = "users")]
pub struct User {
/// The unique identifier for the user, which is the primary key.
#[model(primary_key, auto_increment)]
pub id: Option<i32>,
/// The full name of the user.
#[model(column = "full_name")]
#[serde(rename = "full_name")]
pub name: String,
/// The email address of the user.
pub email: String,
/// The timestamp when the user was created.
pub created_at: NaiveDateTime,
/// The password of the user.
#[model(sql_type = "VARCHAR(100)")]
pub password_hash: String,
}
let mut user = User { id: None, name: "Alice".to_string(), email: "alice@example.com".to_string() };
user.insert(&conn)?;
let users: Vec<User> = User::find_all(&conn)?;
user.name = "Alice Smith".to_string();
user.update(&conn)?;
user.delete(&conn)?;
rusticx provides a custom error type, RusticxError, which encapsulates various error scenarios, including connection errors, query errors, and serialization errors. You can handle these errors using Rust's standard error handling mechanisms.
Contributions are welcome! Please follow these steps:
git checkout -b feature-branch).git commit -m 'Add new feature').git push origin feature-branch).This project is licensed under the MIT License. See the LICENSE file for details.
For any inquiries or issues, please reach out to Tarun Vishwakarma.