"""AioSQLite session store for Litestar integration."""
from datetime import datetime, timedelta, timezone
from typing import TYPE_CHECKING, Any
from sqlspec.adapters.aiosqlite.config import _apply_extension_pragmas, _extension_pragma_statements
from sqlspec.extensions.litestar.store import BaseSQLSpecStore
if TYPE_CHECKING:
from sqlspec.adapters.aiosqlite.config import AiosqliteConfig
__all__ = ("AiosqliteStore",)
SECONDS_PER_DAY = 86400.0
JULIAN_EPOCH = 2440587.5
class AiosqliteStore(BaseSQLSpecStore["AiosqliteConfig"]):
"""SQLite session store using AioSQLite driver.
Implements server-side session storage for Litestar using SQLite
via the AioSQLite driver. Provides efficient session management with:
- Native async SQLite operations
- INSERT OR REPLACE for UPSERT functionality
- Automatic expiration handling
- Efficient cleanup of expired sessions
Args:
config: AiosqliteConfig instance.
"""
__slots__ = ("_pragma_statements",)
extension_config_options = BaseSQLSpecStore.extension_config_options | frozenset({
"pragma_overrides",
"pragma_profile",
})
def __init__(self, config: "AiosqliteConfig") -> None:
"""Initialize AioSQLite session store.
Args:
config: AiosqliteConfig instance.
"""
super().__init__(config)
self._pragma_statements = _extension_pragma_statements(config, "litestar")