File size: 1,245 Bytes
220d87f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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"}