# modules/nlp/api.py from fastapi import APIRouter, Depends from sqlalchemy.orm import Session from core.database import get_db from core.exceptions import bad_request_exception from modules.auth.dependencies import get_current_user from modules.auth.models import User from modules.nlp.service import process_request, ask_ai from modules.calendar.service import create_calendar_event, get_calendar_events, update_calendar_event, delete_calendar_event from modules.calendar.schemas import CalendarEventCreate router = APIRouter(prefix="/nlp", tags=["nlp"]) @router.post("/process-command") def process_command(user_input: str, current_user: User = Depends(get_current_user), db: Session = Depends(get_db)): """ Process the user command and return the appropriate action. """ command = process_request(user_input) if "error" in command: raise bad_request_exception(command["error"]) match command["intent"]: case "ask_ai": result = ask_ai(**command["params"]) return {"action": "ai_response", "details": result} case "get_calendar_events": result = get_calendar_events(db, current_user.id, **command["params"]) return {"action": "calendar_events_retrieved", "details": result} case "add_calendar_event": event = CalendarEventCreate(**command["params"]) result = create_calendar_event(db, current_user.id, event) return {"action": "calendar_event_created", "details": result} case "update_calendar_event": event = CalendarEventCreate(**command["params"]) result = update_calendar_event(db, current_user.id, 0, event_data=event) ## PLACEHOLDER return {"action": "calendar_event_updated", "details": result} case "delete_calendar_event": result = update_calendar_event(db, current_user.id, 0) ## PLACEHOLDER return {"action": "calendar_event_deleted", "details": result} case "unknown": return {"action": "unknown_command", "details": command["params"]} case _: raise bad_request_exception(400, detail="Unrecognized command")