from fastapi import APIRouter, Depends, UploadFile, File from sqlalchemy.orm import Session from ..database import get_db from ..schemas import ChatIn, ChatOut, ChatMessageOut from ..models import ChatMessage from ..core.security import get_current_user router = APIRouter(prefix="/api/chat", tags=["Chat"]) @router.get("/history", response_model=list[ChatMessageOut]) def history(db: Session = Depends(get_db), user = Depends(get_current_user)): rows = db.query(ChatMessage).filter(ChatMessage.user_id == user.id).order_by(ChatMessage.created_at.asc()).all() return rows @router.post("", response_model=ChatOut) def send(payload: ChatIn, db: Session = Depends(get_db), user = Depends(get_current_user)): um = ChatMessage(user_id=user.id, role="user", content=payload.message) db.add(um) reply_text = f"CHB: You said '{payload.message}'" bm = ChatMessage(user_id=user.id, role="assistant", content=reply_text) db.add(bm) db.commit() return {"reply": reply_text} @router.post("/upload") async def upload(file: UploadFile = File(...), user = Depends(get_current_user)): # stub: accept file and return name; real storage to be implemented return {"filename": file.filename, "detail":"file received"}