Automated Action fec0fa72e7 Initial project setup with FastAPI, SQLite, and Alembic
- Set up SQLite database configuration and directory structure
- Configure Alembic for proper SQLite migrations
- Add initial model schemas and API endpoints
- Fix OAuth2 authentication
- Implement proper code formatting with Ruff
2025-05-27 20:34:02 +00:00

69 lines
1.7 KiB
Python

import time
from typing import Any, Dict, Optional
from app.core.config import settings
class CacheService:
"""Simple in-memory cache service."""
def __init__(self):
self._cache: Dict[str, Dict[str, Any]] = {}
def get(self, key: str) -> Optional[Any]:
"""
Get value from cache.
Args:
key: Cache key
Returns:
Cached value or None if not found or expired
"""
if key not in self._cache:
return None
cache_item = self._cache[key]
# Check if cache item has expired
if time.time() > cache_item["expires_at"]:
# Remove expired item
del self._cache[key]
return None
return cache_item["value"]
def set(self, key: str, value: Any, expires_in: Optional[int] = None) -> None:
"""
Set value in cache.
Args:
key: Cache key
value: Value to cache
expires_in: Expiration time in seconds (default from settings)
"""
if expires_in is None:
expires_in = settings.CACHE_EXPIRATION_SECONDS
self._cache[key] = {
"value": value,
"expires_at": time.time() + expires_in
}
def delete(self, key: str) -> None:
"""
Delete value from cache.
Args:
key: Cache key
"""
if key in self._cache:
del self._cache[key]
def clear(self) -> None:
"""Clear all cached values."""
self._cache.clear()
# Create a singleton instance of the cache
cache = CacheService()