mirror of
https://github.com/RYGhub/royalnet.git
synced 2024-11-22 19:14:20 +00:00
Remove royalnet.engineer.bolts
, which is not usable anymore after royalnet.alchemist
was removed
This commit is contained in:
parent
5ce523be1f
commit
f71e4be9f3
1 changed files with 0 additions and 54 deletions
|
@ -1,54 +0,0 @@
|
|||
"""
|
||||
This module contains **bolts**, utility decorators which can be used to enhance
|
||||
:class:`~royalnet.engineer.conversation.Conversation`\\ s.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import functools
|
||||
import logging
|
||||
import typing as t
|
||||
|
||||
import sqlalchemy.orm
|
||||
|
||||
import royalnet.lazy
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def use_database(session_class: t.Union[t.Type[sqlalchemy.orm.Session], royalnet.lazy.Lazy], *args, **kwargs):
|
||||
"""
|
||||
Decorator factory which allows a :class:`~royalnet.engineer.conversation.Conversation` to use a
|
||||
:class:`sqlalchemy.orm.Session` created from the passed :class:`sqlalchemy.orm.sessionmaker` .
|
||||
|
||||
The session is automatically opened and closed, and will be available in the `_session` kwarg.
|
||||
|
||||
:param session_class: The :class:`sqlalchemy.orm.Session` class to use when creating the session.
|
||||
It can also be provided wrapped in a :class:`royalnet.lazy.Lazy` object, from which it will
|
||||
be evaluated.
|
||||
:return: The decorator to use to decorate the function.
|
||||
"""
|
||||
|
||||
if isinstance(session_class, royalnet.lazy.Lazy):
|
||||
session_class = session_class.evaluate()
|
||||
|
||||
def decorator(f):
|
||||
@functools.wraps(f)
|
||||
async def decorated(**f_kwargs):
|
||||
log.debug(f"Opening database session from {session_class!r}...")
|
||||
with session_class(*args, **kwargs) as session:
|
||||
log.debug(f"Opened database session {session!r} successfully!")
|
||||
result = await f(**f_kwargs, _session=session)
|
||||
log.debug(f"Closing database session {session!r}...")
|
||||
log.debug(f"Closed database session from {session_class!r} successfully!")
|
||||
# Shouldn't be necessary, conversations return None anyways
|
||||
return result
|
||||
|
||||
return decorated
|
||||
|
||||
return decorator
|
||||
|
||||
|
||||
__all__ = (
|
||||
"use_database",
|
||||
)
|
Loading…
Reference in a new issue