|
|
|
|
@ -52,12 +52,22 @@ async def related_documents(document_id: str, limit: int = 5):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _row_to_doc(row: asyncpg.Record) -> DocumentResponse:
|
|
|
|
|
# Handle frontmatter - asyncpg returns JSONB as dict directly
|
|
|
|
|
fm = row['frontmatter']
|
|
|
|
|
if fm is None:
|
|
|
|
|
frontmatter = {}
|
|
|
|
|
elif isinstance(fm, dict):
|
|
|
|
|
frontmatter = fm
|
|
|
|
|
else:
|
|
|
|
|
# Fallback for unexpected types
|
|
|
|
|
frontmatter = {}
|
|
|
|
|
|
|
|
|
|
return DocumentResponse(
|
|
|
|
|
id=str(row['id']),
|
|
|
|
|
path=row['path'],
|
|
|
|
|
title=row['title'] or '',
|
|
|
|
|
content=row['content'],
|
|
|
|
|
frontmatter=dict(row['frontmatter'] or {}),
|
|
|
|
|
frontmatter=frontmatter,
|
|
|
|
|
tags=list(row['tags'] or []),
|
|
|
|
|
aliases=list(row['aliases'] or []),
|
|
|
|
|
word_count=row['word_count'],
|
|
|
|
|
|