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"
|
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]:
|
async def fetch_authors_with_stats() -> list[Any]:
|
||||||
@@ -742,8 +754,10 @@ async def get_author(
|
|||||||
|
|
||||||
author_dict = None
|
author_dict = None
|
||||||
try:
|
try:
|
||||||
author_id = get_author_id_from(slug=slug, user="", author_id=author_id)
|
logger.debug(f"🔍 get_author called with slug='{slug}', author_id={author_id}")
|
||||||
if not 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"
|
msg = "cant find"
|
||||||
raise ValueError(msg)
|
raise ValueError(msg)
|
||||||
|
|
||||||
@@ -753,8 +767,10 @@ async def get_author(
|
|||||||
filter_by: AuthorsBy = {}
|
filter_by: AuthorsBy = {}
|
||||||
if slug:
|
if slug:
|
||||||
filter_by["slug"] = slug
|
filter_by["slug"] = slug
|
||||||
elif author_id:
|
logger.debug(f"🔍 Using slug filter: {slug}")
|
||||||
filter_by["id"] = author_id
|
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)
|
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:
|
if authors_with_stats and len(authors_with_stats) > 0:
|
||||||
@@ -767,7 +783,7 @@ async def get_author(
|
|||||||
if slug:
|
if slug:
|
||||||
author = session.query(Author).filter_by(slug=slug).first()
|
author = session.query(Author).filter_by(slug=slug).first()
|
||||||
else:
|
else:
|
||||||
author = session.query(Author).filter_by(id=author_id).first()
|
author = session.query(Author).filter_by(id=resolved_author_id).first()
|
||||||
if author:
|
if author:
|
||||||
author_dict = author.dict(is_admin)
|
author_dict = author.dict(is_admin)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
@@ -777,7 +793,7 @@ async def get_author(
|
|||||||
if slug:
|
if slug:
|
||||||
author = session.query(Author).filter_by(slug=slug).first()
|
author = session.query(Author).filter_by(slug=slug).first()
|
||||||
else:
|
else:
|
||||||
author = session.query(Author).filter_by(id=author_id).first()
|
author = session.query(Author).filter_by(id=resolved_author_id).first()
|
||||||
if author:
|
if author:
|
||||||
author_dict = author.dict(is_admin)
|
author_dict = author.dict(is_admin)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
|
|||||||
Reference in New Issue
Block a user