"""SQLSpec-backed session service for Google ADK."""
import inspect
import logging
from datetime import datetime, timezone
from typing import TYPE_CHECKING, Any, cast
from google.adk.sessions.base_session_service import BaseSessionService, GetSessionConfig, ListSessionsResponse
from sqlspec.extensions.adk.converters import (
compute_update_marker,
event_to_record,
filter_temp_state,
merge_scoped_state,
record_to_session,
split_scoped_state,
)
from sqlspec.extensions.adk.store import normalize_session_list_options
from sqlspec.utils.logging import get_logger, log_with_context
from sqlspec.utils.sync_tools import async_
from sqlspec.utils.uuids import uuid4
if TYPE_CHECKING:
from collections.abc import Callable
from google.adk.events.event import Event
from google.adk.sessions import Session
from sqlspec.extensions.adk._types import SessionOrderBy
from sqlspec.extensions.adk.store import BaseAsyncADKStore, BaseSyncADKStore
ADKStore = BaseAsyncADKStore | BaseSyncADKStore
__all__ = ("SQLSpecSessionService",)
logger = get_logger("sqlspec.extensions.adk.service")
class SQLSpecSessionService(BaseSessionService):
"""SQLSpec-backed implementation of BaseSessionService.
Provides session and event storage using SQLSpec database adapters.
Delegates all database operations to a store implementation.
Args:
store: Database store implementation.
"""
def __init__(self, store: "ADKStore") -> None:
"""Initialize the session service.
Args:
store: Database store implementation.
"""
self._store = store