From 5250189f77bcc4c6c017fdcc3a60ae2a6104f714 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 6 Aug 2022 15:08:13 +0200 Subject: [PATCH] Add Rollback function to Trade simplifies Session work --- freqtrade/persistence/trade_model.py | 6 +++++- freqtrade/rpc/api_server/deps.py | 4 ++-- freqtrade/rpc/rpc.py | 2 +- freqtrade/rpc/telegram.py | 2 +- tests/test_persistence.py | 1 + 5 files changed, 10 insertions(+), 5 deletions(-) diff --git a/freqtrade/persistence/trade_model.py b/freqtrade/persistence/trade_model.py index 19d9361b6..3ea6ddf2d 100644 --- a/freqtrade/persistence/trade_model.py +++ b/freqtrade/persistence/trade_model.py @@ -196,7 +196,7 @@ class Order(_DECL_BASE): if filtered_orders: oobj = filtered_orders[0] oobj.update_from_ccxt_object(order) - Order.query.session.commit() + Trade.commit() else: logger.warning(f"Did not find order for {order}.") @@ -1148,6 +1148,10 @@ class Trade(_DECL_BASE, LocalTrade): def commit(): Trade.query.session.commit() + @staticmethod + def rollback(): + Trade.query.session.rollback() + @staticmethod def get_trades_proxy(*, pair: str = None, is_open: bool = None, open_date: datetime = None, close_date: datetime = None, diff --git a/freqtrade/rpc/api_server/deps.py b/freqtrade/rpc/api_server/deps.py index 81c013efa..66654c0b1 100644 --- a/freqtrade/rpc/api_server/deps.py +++ b/freqtrade/rpc/api_server/deps.py @@ -18,9 +18,9 @@ def get_rpc_optional() -> Optional[RPC]: def get_rpc() -> Optional[Iterator[RPC]]: _rpc = get_rpc_optional() if _rpc: - Trade.query.session.rollback() + Trade.rollback() yield _rpc - Trade.query.session.rollback() + Trade.rollback() else: raise RPCException('Bot is not in the correct state') diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 7e431ece9..d848da546 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -876,7 +876,7 @@ class RPC: lock.active = False lock.lock_end_time = datetime.now(timezone.utc) - PairLock.query.session.commit() + Trade.commit() return self._rpc_locks() diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 02fb5b4ee..9e0cd7d86 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -70,7 +70,7 @@ def authorized_only(command_handler: Callable[..., None]) -> Callable[..., Any]: ) return wrapper # Rollback session to avoid getting data stored in a transaction. - Trade.query.session.rollback() + Trade.rollback() logger.debug( 'Executing handler: %s for chat_id: %s', command_handler.__name__, diff --git a/tests/test_persistence.py b/tests/test_persistence.py index 42fcc7413..eea6d6fa1 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -2375,6 +2375,7 @@ def test_Trade_object_idem(): 'delete', 'session', 'commit', + 'rollback', 'query', 'open_date', 'get_best_pair',