mirror of
https://github.com/EvolutionAPI/adk-python.git
synced 2025-07-13 15:14:50 -06:00
Align event filtering and ordering logic
Copybara import of the project: -- d01a8fd5f079bc4fca9e4b71796dbe65312ce9ff by Leo Yongsul Kim <ystory84@gmail.com>: fix(DatabaseSessionService): Align event filtering and ordering logic This commit addresses inconsistencies in how DatabaseSessionService handles config.after_timestamp and config.num_recent_events parameters, aligning its behavior with InMemorySessionService and VertexAiSessionService. Key changes: - Made after_timestamp filtering inclusive - Corrected num_recent_events behavior to fetch the N most recent events - Refined timezone handling for after_timestamp - Updated the unit test test_get_session_with_config to includeSessionServiceType.DATABASE, allowing verification of these fixes. Fixes #911 COPYBARA_INTEGRATE_REVIEW=https://github.com/google/adk-python/pull/915 from ystory:fix/database-session-timestamp-recency 5cc8cf5f5a5c0cb3e87f6ab178a5725d3f696c88 PiperOrigin-RevId: 763874840
This commit is contained in:
parent
19ca61d241
commit
c024ac5762
@ -13,7 +13,6 @@
|
||||
# limitations under the License.
|
||||
import copy
|
||||
from datetime import datetime
|
||||
from datetime import timezone
|
||||
import json
|
||||
import logging
|
||||
from typing import Any
|
||||
@ -371,10 +370,8 @@ class DatabaseSessionService(BaseSessionService):
|
||||
return None
|
||||
|
||||
if config and config.after_timestamp:
|
||||
after_dt = datetime.fromtimestamp(
|
||||
config.after_timestamp, tz=timezone.utc
|
||||
)
|
||||
timestamp_filter = StorageEvent.timestamp > after_dt
|
||||
after_dt = datetime.fromtimestamp(config.after_timestamp)
|
||||
timestamp_filter = StorageEvent.timestamp >= after_dt
|
||||
else:
|
||||
timestamp_filter = True
|
||||
|
||||
@ -382,7 +379,7 @@ class DatabaseSessionService(BaseSessionService):
|
||||
session_factory.query(StorageEvent)
|
||||
.filter(StorageEvent.session_id == storage_session.id)
|
||||
.filter(timestamp_filter)
|
||||
.order_by(StorageEvent.timestamp.asc())
|
||||
.order_by(StorageEvent.timestamp.desc())
|
||||
.limit(
|
||||
config.num_recent_events
|
||||
if config and config.num_recent_events
|
||||
@ -429,7 +426,7 @@ class DatabaseSessionService(BaseSessionService):
|
||||
error_message=e.error_message,
|
||||
interrupted=e.interrupted,
|
||||
)
|
||||
for e in storage_events
|
||||
for e in reversed(storage_events)
|
||||
]
|
||||
return session
|
||||
|
||||
|
@ -315,7 +315,7 @@ async def test_append_event_complete(service_type):
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
@pytest.mark.parametrize('service_type', [SessionServiceType.IN_MEMORY])
|
||||
@pytest.mark.parametrize('service_type', [SessionServiceType.IN_MEMORY, SessionServiceType.DATABASE])
|
||||
async def test_get_session_with_config(service_type):
|
||||
session_service = get_session_service(service_type)
|
||||
app_name = 'my_app'
|
||||
|
Loading…
Reference in New Issue
Block a user