46 lines
1.6 KiB
Python
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)
|