This commit is contained in:
@@ -138,7 +138,19 @@ async def get_authors_with_stats(
|
||||
"""
|
||||
# Формируем ключ кеша с помощью универсальной функции
|
||||
order_value = by.get("order", "default") if by else "default"
|
||||
cache_key = f"authors:stats:limit={limit}:offset={offset}:order={order_value}"
|
||||
|
||||
# Добавляем фильтры в ключ кэша для правильного кэширования
|
||||
filter_parts = []
|
||||
if by:
|
||||
if by.get("slug"):
|
||||
filter_parts.append(f"slug={by['slug']}")
|
||||
if by.get("id"):
|
||||
filter_parts.append(f"id={by['id']}")
|
||||
if by.get("stat"):
|
||||
filter_parts.append(f"stat={by['stat']}")
|
||||
|
||||
filter_str = ":".join(filter_parts) if filter_parts else "all"
|
||||
cache_key = f"authors:stats:limit={limit}:offset={offset}:order={order_value}:filter={filter_str}"
|
||||
|
||||
# Функция для получения авторов из БД
|
||||
async def fetch_authors_with_stats() -> list[Any]:
|
||||
@@ -742,8 +754,10 @@ async def get_author(
|
||||
|
||||
author_dict = None
|
||||
try:
|
||||
author_id = get_author_id_from(slug=slug, user="", author_id=author_id)
|
||||
if not author_id:
|
||||
logger.debug(f"🔍 get_author called with slug='{slug}', author_id={author_id}")
|
||||
resolved_author_id = get_author_id_from(slug=slug, user="", author_id=author_id)
|
||||
logger.debug(f"🔍 get_author_id_from returned: {resolved_author_id}")
|
||||
if not resolved_author_id:
|
||||
msg = "cant find"
|
||||
raise ValueError(msg)
|
||||
|
||||
@@ -753,8 +767,10 @@ async def get_author(
|
||||
filter_by: AuthorsBy = {}
|
||||
if slug:
|
||||
filter_by["slug"] = slug
|
||||
elif author_id:
|
||||
filter_by["id"] = author_id
|
||||
logger.debug(f"🔍 Using slug filter: {slug}")
|
||||
elif resolved_author_id:
|
||||
filter_by["id"] = resolved_author_id
|
||||
logger.debug(f"🔍 Using id filter: {resolved_author_id}")
|
||||
|
||||
authors_with_stats = await get_authors_with_stats(limit=1, offset=0, by=filter_by)
|
||||
if authors_with_stats and len(authors_with_stats) > 0:
|
||||
@@ -767,7 +783,7 @@ async def get_author(
|
||||
if slug:
|
||||
author = session.query(Author).filter_by(slug=slug).first()
|
||||
else:
|
||||
author = session.query(Author).filter_by(id=author_id).first()
|
||||
author = session.query(Author).filter_by(id=resolved_author_id).first()
|
||||
if author:
|
||||
author_dict = author.dict(is_admin)
|
||||
except Exception as e:
|
||||
@@ -777,7 +793,7 @@ async def get_author(
|
||||
if slug:
|
||||
author = session.query(Author).filter_by(slug=slug).first()
|
||||
else:
|
||||
author = session.query(Author).filter_by(id=author_id).first()
|
||||
author = session.query(Author).filter_by(id=resolved_author_id).first()
|
||||
if author:
|
||||
author_dict = author.dict(is_admin)
|
||||
except ValueError:
|
||||
|
||||
Reference in New Issue
Block a user