Skip to main content

ActiveRecord

Trait ActiveRecord 

Source
pub trait ActiveRecord: Entity + Sized {
    // Provided methods
    fn query<C>(db: &C) -> DbSetQuery<Self>
       where C: DbContextEntitySet<Self>,
             Self: TenantScopedEntity { ... }
    fn find<C, K>(
        db: &C,
        key: K,
    ) -> impl Future<Output = Result<Option<Self>, OrmError>> + Send
       where C: DbContextEntitySet<Self>,
             Self: FromRow + Send + SoftDeleteEntity + TenantScopedEntity,
             K: SqlTypeMapping + Send { ... }
    fn delete<C>(
        &self,
        db: &C,
    ) -> impl Future<Output = Result<bool, OrmError>> + Send
       where C: DbContextEntitySet<Self> + Sync,
             Self: EntityPrimaryKey + EntityPersist + FromRow + Send + SoftDeleteEntity + TenantScopedEntity { ... }
    fn save<C>(
        &mut self,
        db: &C,
    ) -> impl Future<Output = Result<(), OrmError>> + Send
       where C: DbContextEntitySet<Self> + Sync,
             Self: AuditEntity + EntityPersist + FromRow + Send + SoftDeleteEntity + TenantScopedEntity { ... }
}
Expand description

Convenience Active Record style API for entities.

Every Entity implements this trait. The methods delegate to the DbSet declared on a DbContext, so Active Record remains a thin convenience layer over the same query, insert, update, delete, tenant, audit, and soft-delete pipelines used by the explicit context API.

Provided Methods§

Source

fn query<C>(db: &C) -> DbSetQuery<Self>
where C: DbContextEntitySet<Self>, Self: TenantScopedEntity,

Starts a query for this entity through the context’s DbSet<Self>.

Source

fn find<C, K>( db: &C, key: K, ) -> impl Future<Output = Result<Option<Self>, OrmError>> + Send

Finds one entity by single-column primary key through the context.

Source

fn delete<C>( &self, db: &C, ) -> impl Future<Output = Result<bool, OrmError>> + Send
where C: DbContextEntitySet<Self> + Sync, Self: EntityPrimaryKey + EntityPersist + FromRow + Send + SoftDeleteEntity + TenantScopedEntity,

Deletes this entity through the context’s DbSet<Self>.

Entities with soft_delete use logical delete. Entities with rowversion participate in the same concurrency-conflict detection as the explicit DbSet delete path.

Source

fn save<C>( &mut self, db: &C, ) -> impl Future<Output = Result<(), OrmError>> + Send
where C: DbContextEntitySet<Self> + Sync, Self: AuditEntity + EntityPersist + FromRow + Send + SoftDeleteEntity + TenantScopedEntity,

Inserts or updates this entity according to the derived persistence strategy.

The method syncs the in-memory entity with the persisted row returned by SQL Server.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§