Files

46 lines
1.6 KiB
Python

from fastapi import APIRouter, Depends
from sqlalchemy.orm import Session
from backend.services.notaService import NotaService
from backend.schemas.notaSchema import NotaCreate, NotaUpdate, NotaOut, SearchQuery, HybridSearchQuery
from backend.db.dependencies import get_db # tu función para obtener la sesión
router = APIRouter(prefix="/notas", tags=["Notas"])
@router.post("/", response_model=str)
def create_nota(data: NotaCreate, db: Session = Depends(get_db)):
return NotaService(db).create(**data.dict())
@router.get("/{id_}", response_model=NotaOut)
def get_nota(id_: str, db: Session = Depends(get_db)):
return NotaService(db).get(id_)
@router.get("/", response_model=list[NotaOut])
def list_notas(db: Session = Depends(get_db)):
return NotaService(db).list_all()
@router.put("/{id_}", response_model=bool)
def update_nota(id_: str, data: NotaUpdate, db: Session = Depends(get_db)):
return NotaService(db).update(id_, **data.dict(exclude_none=True))
@router.delete("/{id_}", response_model=bool)
def delete_nota(id_: str, db: Session = Depends(get_db)):
return NotaService(db).delete(id_)
# ---------------------
# RAG Endpoints
# ---------------------
@router.post("/search", response_model=list[NotaOut])
def search_nota(query: SearchQuery, db: Session = Depends(get_db)):
return NotaService(db).search_by_text(query.texto, query.top_k)
@router.post("/hybrid-search", response_model=list[NotaOut])
def hybrid_search(query: HybridSearchQuery, db: Session = Depends(get_db)):
return NotaService(db).hybrid_search(query.texto, query.tags, query.top_k)