feat: MTG database integration with Redis caching
- Added MTG card ORM models (mtg_cards, mtg_sets tables) - Created card_database service with search, get_by_name, get_by_set - Added Redis client with caching layer (3600s TTL default) - Created card router with caching on all endpoints: - Search cards (5min cache) - Get card by name (10min cache) - Get cards by set (15min cache) - Get card types/rarities (30min cache) - Get sets (1hr cache) - Get statistics (1hr cache) - Updated settings.py: - Added JWT_SECRET_KEY field - Added DB_CONFIG and REDIS_CONFIG dictionaries - Updated security.py to use JWT_SECRET_KEY with fallback - Updated auth.py to use timezone-aware datetimes - Updated refresh_mtg.py to use settings instead of os.environ - Updated mtg_monitor.py to use settings for connections - Added services package with __init__.py All 20 tests passing.
This commit is contained in:
@@ -4,7 +4,7 @@ from sqlalchemy.ext.asyncio import AsyncSession
|
||||
from sqlalchemy import select
|
||||
from typing import Optional
|
||||
|
||||
from datetime import datetime
|
||||
from datetime import datetime, timezone, timezone
|
||||
|
||||
from app.core.database import get_db
|
||||
from app.core.security import (
|
||||
@@ -47,14 +47,14 @@ async def login(request: LoginRequest, db: AsyncSession = Depends(get_db)):
|
||||
detail="Account is disabled",
|
||||
)
|
||||
|
||||
if user.is_banned and user.ban_ends and user.ban_ends > __import__("datetime").datetime.now():
|
||||
if user.is_banned and user.ban_ends and user.ban_ends > datetime.now():
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_403_FORBIDDEN,
|
||||
detail="Account is banned",
|
||||
)
|
||||
|
||||
# Update last login
|
||||
user.last_login = __import__("datetime").datetime.now()
|
||||
user.last_login = datetime.now(timezone.utc)
|
||||
await db.flush()
|
||||
|
||||
# Generate tokens
|
||||
|
||||
Reference in New Issue
Block a user