Skip to main content

rust_ef/
lib.rs

1//! # Rust Entity Framework (rust-ef)
2//!
3//! An EFCore-inspired ORM for Rust, bringing the familiar
4//! DbContext/DbSet/EntityType patterns to the Rust ecosystem.
5//!
6//! ## Example
7//!
8//! ```rust,ignore
9//! use rust_ef::prelude::*;
10//!
11//! #[derive(EntityType)]
12//! #[table("blogs")]
13//! pub struct Blog {
14//!     #[primary_key]
15//!     #[auto_increment]
16//!     pub blog_id: i32,
17//!     #[required]
18//!     #[max_length(200)]
19//!     pub url: String,
20//!     pub rating: i32,
21//!     #[navigation]
22//!     pub posts: HasMany<Post>,
23//! }
24//! ```
25
26#![forbid(unsafe_code)]
27
28pub mod cascade;
29pub mod change_executor;
30pub mod db_context;
31pub mod db_set;
32pub mod dependency_graph;
33pub mod di;
34pub mod entity;
35pub mod entity_snapshot;
36pub mod error;
37pub mod interceptor;
38pub mod lazy;
39pub mod metadata;
40pub(crate) mod metadata_cache;
41pub mod migration;
42pub mod model_builder;
43pub mod navigation_loader;
44pub mod observability;
45pub mod provider;
46pub mod query;
47pub mod registration;
48pub mod relations;
49pub(crate) mod session;
50pub mod tracking;
51pub mod transaction;
52
53pub use async_trait;
54
55pub use inventory;
56
57pub use rust_ef_macros::{column, entity, linq, DbContextKey, EntityType};
58
59/// Re-exports of the most commonly used types.
60pub mod prelude {
61    pub use crate::db_context::{
62        AsyncPreflight, AsyncPreflightFuture, DbContext, DbContextOptions, DbContextOptionsBuilder,
63        SaveChangesResult,
64    };
65    pub use crate::db_set::{DbSet, IDbSet};
66    pub use crate::di::{DbContextResolver, DbContextServiceCollectionExt, IDbContextKey};
67    pub use crate::entity::{
68        EntityState, IEntitySnapshot, IEntityType, IFromRow, IGetKeyValues, ILazyInit,
69        INavigationSetter,
70    };
71    pub use crate::entity_snapshot::EntitySnapshot;
72    pub use crate::error::{EFError, EFErrorCode, EFResult};
73    pub use crate::interceptor::{
74        ISaveChangesInterceptor, SaveChangesContext, SaveChangesResultContext,
75    };
76    pub use crate::lazy::{LazyContext, LazyContextImpl, MAX_LAZY_DEPTH};
77    pub use crate::metadata::EntityTypeMeta;
78    pub use crate::metadata::NavigationMeta;
79    pub use crate::metadata::PropertyMeta;
80    pub use crate::model_builder::{
81        EntityTypeBuilder, IEntityTypeConfiguration, ModelBuilder, PropertyBuilder,
82    };
83    pub use crate::provider::DbValue;
84    pub use crate::provider::IDatabaseProvider;
85    pub use crate::provider::IsolationLevel;
86    pub use crate::query::{
87        BoolExpr, CteSpec, LinqSource, SetOpSpec, SetOperator, WindowFuncKind, WindowSpec,
88    };
89    pub use crate::registration::{EntityConfigRegistration, EntityRegistration};
90    pub use crate::relations::{BelongsTo, DeleteBehavior, HasMany, HasOne};
91    pub use crate::tracking::ChangeTracker;
92    pub use crate::transaction::{DbTransaction, ITransaction};
93    pub use rust_ef_macros::column;
94    pub use rust_ef_macros::entity;
95    pub use rust_ef_macros::linq;
96    pub use rust_ef_macros::DbContextKey;
97    pub use rust_ef_macros::EntityType;
98}