refactor: timestamp compatible with Firestore #30
@@ -6,7 +6,7 @@ import asyncio
|
|||||||
import logging
|
import logging
|
||||||
import time
|
import time
|
||||||
import uuid
|
import uuid
|
||||||
from datetime import datetime, timezone
|
from datetime import UTC, datetime
|
||||||
from typing import TYPE_CHECKING, Any, override
|
from typing import TYPE_CHECKING, Any, override
|
||||||
|
|
||||||
from google.adk.errors.already_exists_error import AlreadyExistsError
|
from google.adk.errors.already_exists_error import AlreadyExistsError
|
||||||
@@ -112,8 +112,13 @@ class FirestoreSessionService(BaseSessionService):
|
|||||||
if hasattr(value, "timestamp"):
|
if hasattr(value, "timestamp"):
|
||||||
try:
|
try:
|
||||||
return float(value.timestamp())
|
return float(value.timestamp())
|
||||||
except Exception: # pragma: no cover - defensive fallback
|
except (
|
||||||
logger.debug("Failed to convert timestamp %r", value)
|
TypeError,
|
||||||
|
ValueError,
|
||||||
|
OSError,
|
||||||
|
OverflowError,
|
||||||
|
) as exc: # pragma: no cover
|
||||||
|
logger.debug("Failed to convert timestamp %r: %s", value, exc)
|
||||||
return default
|
return default
|
||||||
|
|
||||||
# ------------------------------------------------------------------
|
# ------------------------------------------------------------------
|
||||||
@@ -185,7 +190,7 @@ class FirestoreSessionService(BaseSessionService):
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
now = datetime.now(timezone.utc)
|
now = datetime.now(UTC)
|
||||||
write_coros.append(
|
write_coros.append(
|
||||||
self._session_ref(app_name, user_id, session_id).set(
|
self._session_ref(app_name, user_id, session_id).set(
|
||||||
{
|
{
|
||||||
@@ -384,7 +389,7 @@ class FirestoreSessionService(BaseSessionService):
|
|||||||
# Persist state deltas
|
# Persist state deltas
|
||||||
session_ref = self._session_ref(app_name, user_id, session_id)
|
session_ref = self._session_ref(app_name, user_id, session_id)
|
||||||
|
|
||||||
last_update_dt = datetime.fromtimestamp(event.timestamp, timezone.utc)
|
last_update_dt = datetime.fromtimestamp(event.timestamp, UTC)
|
||||||
|
|
||||||
if event.actions and event.actions.state_delta:
|
if event.actions and event.actions.state_delta:
|
||||||
state_deltas = _session_util.extract_state_delta(event.actions.state_delta)
|
state_deltas = _session_util.extract_state_delta(event.actions.state_delta)
|
||||||
|
|||||||
Reference in New Issue
Block a user