loom.core.repository.sqlalchemy¶
- class loom.core.repository.sqlalchemy.AuditActorMixin[source]¶
Bases:
objectOptional actor tracking for auth-enabled deployments.
- class loom.core.repository.sqlalchemy.AuditableModel(*args, **kwargs)[source]¶
Bases:
Base,IdentityMixin,TimestampMixin,AuditActorMixinOptional model base that also tracks actor fields.
- Parameters:
args (Any)
kwargs (Any)
- Return type:
Any
- class loom.core.repository.sqlalchemy.Base(*args, **kwargs)[source]¶
Bases:
DeclarativeBaseBase SQLAlchemy declarative class.
- Parameters:
args (Any)
kwargs (Any)
- Return type:
Any
- class loom.core.repository.sqlalchemy.BaseModel(*args, **kwargs)[source]¶
Bases:
Base,IdentityMixin,TimestampMixinDefault project model base (identity + timestamps).
- Parameters:
args (Any)
kwargs (Any)
- Return type:
Any
- class loom.core.repository.sqlalchemy.RepositoryRegistration(model, repository_type, contract=None)[source]¶
Bases:
objectRepository registration metadata for a model-bound SQLAlchemy repository.
- class loom.core.repository.sqlalchemy.IdentityMixin[source]¶
Bases:
objectInteger primary key for entities with standard identity.
- class loom.core.repository.sqlalchemy.Projection(*, loader, profiles=('default',), depends_on=(), default=None)[source]¶
Bases:
Generic[T]Descriptor for derived fields with cache dependency metadata.
- class loom.core.repository.sqlalchemy.RepositoryToken(model)[source]¶
Bases:
objectInternal DI token used for model-centric repository resolution.
- class loom.core.repository.sqlalchemy.RepositorySQLAlchemy(session_manager, model)[source]¶
Bases:
SQLAlchemyCreateMixin[OutputT,IdT],SQLAlchemyReadMixin[OutputT,IdT],SQLAlchemyUpdateMixin[OutputT,IdT],SQLAlchemyDeleteMixin[OutputT,IdT],Generic[OutputT,IdT]Base SQLAlchemy repository with context-aware session management.
Pass
model(a Struct-basedBaseModel) to__init__; the repository uses the compiled SA class for queries and returns the Struct directly.- Parameters:
session_manager (SessionManager)
- class loom.core.repository.sqlalchemy.SessionManager(url, *, echo=False, pool_pre_ping=True, pool_size=10, max_overflow=20, pool_timeout=30, pool_recycle=1800, connect_args=None, inject_trace_id=True, **engine_kwargs)[source]¶
Bases:
objectAsync SQLAlchemy session manager with pooling support.
- Parameters:
- session()[source]¶
Yield a scoped async session that is automatically closed on exit.
- Yields:
An
AsyncSessionbound to the managed engine.- Return type:
AsyncIterator[sqlalchemy.ext.asyncio.AsyncSession]
- async dispose()[source]¶
Dispose of the engine and release all pooled connections.
- Return type:
None
- property engine: sqlalchemy.ext.asyncio.AsyncEngine¶
The underlying async SQLAlchemy engine.
- property session_factory: sqlalchemy.ext.asyncio.async_sessionmaker.sqlalchemy.ext.asyncio.AsyncSession¶
The configured async session factory bound to the engine.
- class loom.core.repository.sqlalchemy.SupportsPostCommit(*args, **kwargs)[source]¶
Bases:
ProtocolProtocol for objects that react to committed transactions.
- class loom.core.repository.sqlalchemy.TimestampMixin[source]¶
Bases:
objectCreated/updated timestamps for all persistent entities.
- loom.core.repository.sqlalchemy.build_repository_registration_module(session_manager, models)[source]¶
Build a DI module that registers model repositories and optional contracts.
Custom repositories declared with
repository_for()are preferred. Models without a custom registration useRepositorySQLAlchemy.- Parameters:
session_manager (SessionManager)
- Return type:
Callable[[LoomContainer], None]
- loom.core.repository.sqlalchemy.get_repository_registration(model)[source]¶
Return the custom repository registration for
modelwhen present.- Parameters:
- Return type:
RepositoryRegistration | None
- loom.core.repository.sqlalchemy.repository_for(model, *, contract=None)[source]¶
Register a SQLAlchemy repository implementation for
model.- Parameters:
- Raises:
RuntimeError – If another repository is already registered for the same model or contract.
- Return type:
Callable[[type[RepositorySQLAlchemy[Any, Any]]], type[RepositorySQLAlchemy[Any, Any]]]
- loom.core.repository.sqlalchemy.transactional(method)[source]¶
Create a single transaction boundary for service/orchestrator use cases.
- Parameters:
method (Callable[[Concatenate[Any, ~P]], Awaitable[T]])
- Return type:
Callable[[Concatenate[Any, ~P]], Awaitable[T]]