Spaces:
Runtime error
Runtime error
| """Chunk service: sequential navigation.""" | |
| from uuid import UUID | |
| from typing import Optional | |
| from sqlalchemy.ext.asyncio import AsyncSession | |
| from app.database.repositories import chunks as chunk_repo | |
| async def get_chunk(session: AsyncSession, chunk_id: UUID) -> Optional[dict]: | |
| """Fetch a single chunk.""" | |
| return await chunk_repo.get_chunk(session, chunk_id) | |
| async def get_next_chunk( | |
| session: AsyncSession, document_id: UUID, current_chunk_id: UUID | |
| ) -> Optional[dict]: | |
| """Fetch the next chunk in physical order.""" | |
| current = await chunk_repo.get_chunk(session, current_chunk_id) | |
| if not current: | |
| return None | |
| return await chunk_repo.get_next_chunk(session, document_id, current["sequence_id"]) | |
| async def get_previous_chunk( | |
| session: AsyncSession, document_id: UUID, current_chunk_id: UUID | |
| ) -> Optional[dict]: | |
| """Fetch the previous chunk in physical order.""" | |
| current = await chunk_repo.get_chunk(session, current_chunk_id) | |
| if not current: | |
| return None | |
| return await chunk_repo.get_previous_chunk(session, document_id, current["sequence_id"]) | |
| async def get_chunk_window( | |
| session: AsyncSession, | |
| document_id: UUID, | |
| chunk_id: UUID, | |
| window_size: int = 2, | |
| ) -> list[dict]: | |
| """Fetch a window of chunks around the given chunk.""" | |
| current = await chunk_repo.get_chunk(session, chunk_id) | |
| if not current: | |
| return [] | |
| return await chunk_repo.get_chunk_window( | |
| session, document_id, current["sequence_id"], window_size | |
| ) | |
| async def get_document_chunks( | |
| session: AsyncSession, document_id: UUID, limit: int = 100, offset: int = 0 | |
| ) -> list[dict]: | |
| """List chunks for a document.""" | |
| return await chunk_repo.get_document_chunks(session, document_id, limit, offset) | |