Expand description
§ormkit
A comprehensive ORM layer for SQLx that combines Diesel’s compile-time guarantees with SeaORM’s developer ergonomics.
§Features
- Hybrid Type Safety: Always-on type safety without DATABASE_URL + optional CI validation
- ActiveModel Pattern: Track field changes for efficient partial updates
- Entity Generation: Generate entities from database schema
- Derive Macros: Automatic implementation of traits
- Advanced Relationships: Auto-loading, eager/lazy loading with N+1 prevention
- Query Builder DSL: Type-safe dynamic query construction
- Pagination: Built-in offset and cursor-based pagination
- Transaction Management: Automatic commit/rollback with transaction guards
- Repository Pattern: Generic CRUD operations for any entity
- Batch Operations: Efficient bulk inserts, updates, and deletes
§Quick Start
use ormkit::{Entity, ActiveModelTrait, Repository};
use ormkit::active_value::ActiveValue;
#[derive(ormkit::Entity)]
#[ormkit(table = "users")]
struct User {
#[ormkit(id)]
id: Uuid,
email: String,
name: String,
}
// Using Repository
let repo = Repository::new(&pool);
// Find by ID
let user = repo.find_by_id(user_id).await?;
// Insert with ActiveModel
let mut user = UserActiveModel::default();
user.email = ActiveValue::Set("user@example.com".to_string());
user.name = ActiveValue::Set("John".to_string());
let user = repo.insert(user).await?;
// Pagination
use ormkit::pagination::{PaginationRequest, Paginator};
let page = User::fetch_paginated(&pool, &PaginationRequest::new(1, 20)).await?;
// Relationships
use ormkit::relations::{RelationBuilder, BelongsTo};
let posts_with_users = RelationBuilder::for_entities(posts)
.load::<User>(&pool)
.await?;
// Transactions
use ormkit::transaction::transaction;
let result = transaction(&pool, |tx| async move {
// Multiple operations
Ok(())
}).await?;Re-exports§
pub use crate::active_value::ActiveValue;pub use crate::active_model::ActiveModelTrait;pub use crate::active_model::ChangeTracker;pub use crate::entity::Entity;pub use crate::query::Expr;pub use crate::query::ExprNode;pub use crate::query::Filter;pub use crate::query::FilterOp;pub use crate::query::JoinType;pub use crate::query::LogicOp;pub use crate::query::Order;pub use crate::query::OrderExpr;pub use crate::query::QueryBuilder;pub use crate::query::typed::Column;pub use crate::query::typed::ColumnRef;pub use crate::query::typed::FilterExpr;pub use crate::query::typed::TypedQueryBuilder;pub use crate::schema::Table;pub use crate::relations::BelongsTo;pub use crate::relations::HasMany;pub use crate::relations::RelationBuilder;pub use crate::relations::Loaded;pub use crate::relations::LoadError;pub use crate::relations::LoadStrategy;pub use crate::relations::RelationMeta;pub use crate::relations::RelationLoader;pub use crate::relations::HasManyLoader;pub use crate::pagination::Paginated;pub use crate::pagination::CursorPaginated;pub use crate::pagination::Cursor;pub use crate::pagination::CursorDirection;pub use crate::pagination::Paginator;pub use crate::pagination::PaginationError;pub use crate::pagination::PaginationMeta;pub use crate::pagination::PaginationRequest;pub use crate::pagination::DEFAULT_PER_PAGE;pub use crate::pagination::MAX_PER_PAGE;pub use crate::transaction::Transaction;pub use crate::transaction::IsolationLevel;pub use crate::transaction::TransactionError;pub use crate::transaction::TransactionResult;pub use crate::transaction::transaction;pub use crate::transaction::transaction_with_isolation;pub use crate::repository::Repository;pub use crate::repository::RepositoryError;pub use crate::repository::RepositoryResult;pub use crate::batch::insert_many;pub use crate::batch::update_many;pub use crate::batch::delete_many;pub use crate::batch::execute_batch;pub use crate::batch::BatchOptions;pub use crate::batch::BatchResult;pub use crate::batch::BatchResultInfo;pub use crate::batch::BatchError;pub use crate::batch::DEFAULT_BATCH_SIZE;pub use crate::batch::MAX_BATCH_SIZE;pub use crate::migrations::Migrator;pub use crate::migrations::Migration;pub use crate::migrations::MigrationConfig;pub use crate::migrations::MigrationResult;pub use crate::migrations::MigrationError;pub use crate::migrations::MigrationSource;pub use crate::migrations::FileMigrationSource;pub use crate::migrations::MigrationTracker;pub use crate::migrations::AppliedMigration;pub use crate::migrations::MigrationCommand;pub use crate::migrations::run_migration_cli;pub use crate::migrations::setup_migrator;pub use crate::validate::SchemaValidator;pub use crate::validate::SchemaValidationError;pub use crate::validate::ColumnInfo;pub use crate::validate::TableInfo;pub use crate::validate::CompileTimeVerifier;pub use crate::query::eager::EagerLoad;pub use crate::query::eager::WithEagerLoad;pub use crate::query::eager::EagerQuery;pub use crate::query::eager::EagerManyQuery;pub use crate::performance::PerformanceConfig;pub use crate::performance::PerformanceExecutor;pub use crate::performance::CacheStats;pub use crate::performance::QueryCache;pub use crate::performance::EntityCache;pub use crate::performance::ParallelExecutor;pub use crate::performance::SmartPool;pub use crate::performance::StreamedQuery;pub use crate::error::OrmkitError;pub use crate::error::CacheConsistency;pub use crate::error::ResultExt;pub use crate::typed_active_model::TypedActiveModel;pub use crate::typed_active_model::TypedActiveModelTrait;pub use crate::cache_rules::InvalidationStrategy;pub use crate::cache_rules::CacheConsistency as CacheConsistencyMode;pub use crate::cache_rules::CacheRules;
Modules§
- active_
model - ActiveModel trait for change tracking and CRUD operations
- active_
value - ActiveValue tracks field changes for ActiveModel pattern
- batch
- Batch operations for efficient bulk database operations
- cache_
rules - Cache invalidation and consistency rules
- entity
- Core Entity trait for ORM models
- error
- Centralized error type for ormkit
- macros
- Public macro module for ormkit
- migrations
- Migration engine for ormkit
- pagination
- Pagination support for query results
- performance
- High-performance query execution layer
- query
- Query Builder DSL
- relations
- Relationship management for ORM entities
- repository
- Repository pattern for generic CRUD operations
- schema
- Schema Type Generation System
- transaction
- Transaction management for ORM operations
- typed_
active_ model - Typed ActiveModel - compile-time safe change tracking
- validate
- Schema validation system
Macros§
- typed_
active_ model - Macro to generate typed ActiveModel for an entity