feat: process now button

This commit is contained in:
Leon
2025-07-16 18:20:21 +02:00
parent ad0d71cd2e
commit 0e19af170d
10 changed files with 238 additions and 28 deletions

View File

@@ -8,6 +8,7 @@ from app.core.imap import _test_imap_connection, get_folders
from app.core.logging import get_logger
from app.crud.settings import create_or_update_settings, get_settings
from app.schemas.settings import Settings, SettingsCreate
from app.services.email_processor import process_emails
logger = get_logger(__name__)
router = APIRouter()
@@ -71,3 +72,15 @@ def read_folders(db: Session = Depends(get_db)):
logger.info(f"Found {len(folders)} IMAP folders")
return folders
@router.post("/imap/process")
def trigger_email_processing(db: Session = Depends(get_db)):
"""Trigger the email processing manually."""
logger.info("Request to manually trigger email processing")
try:
process_emails(db)
return {"message": "Email processing triggered successfully."}
except Exception as e:
logger.error(f"Error triggering email processing: {e}", exc_info=True)
raise HTTPException(status_code=500, detail=str(e))

View File

@@ -102,6 +102,15 @@ def test_get_imap_folders(mock_imap, client: TestClient):
assert response.json() == ["INBOX", "Processed"]
@patch("app.routers.imap.process_emails")
def test_trigger_email_processing(mock_process_emails, client: TestClient):
"""Test triggering email processing manually."""
response = client.post("/imap/process")
assert response.status_code == 200
assert response.json() == {"message": "Email processing triggered successfully."}
mock_process_emails.assert_called_once()
def test_create_newsletter(client: TestClient):
"""Test creating a newsletter."""
unique_email = f"newsletter_{uuid.uuid4()}@example.com"