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)