diff --git a/CHANGELOG.txt b/CHANGELOG.txt index b9497962..8349814d 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -10,6 +10,7 @@ - invite status enum added - topic parents ids added - community CUDL resolvers added +- get_shout resolver accepts slug or shout_id [0.4.4] - followers_stat removed for shout diff --git a/cache/precache.py b/cache/precache.py index 9f4731e6..b8f7c328 100644 --- a/cache/precache.py +++ b/cache/precache.py @@ -78,14 +78,14 @@ async def precache_topics_followers(topic_id: int, session): async def precache_data(): logger.info("precaching...") try: - key = "authorizer_dev" + key = "authorizer_env" # cache reset - value = await redis.get(key) + value = await redis.execute("HGET", key) await redis.execute("FLUSHDB") logger.info("redis: FLUSHDB") if value is not None: await redis.execute("HSET", key, value) - logger.info(f"Значение ключа '{key}' сохранено") + logger.info(f"redis hash '{key}' was successfully restored") with local_session() as session: # topics diff --git a/resolvers/editor.py b/resolvers/editor.py index ef4400a5..df87a1db 100644 --- a/resolvers/editor.py +++ b/resolvers/editor.py @@ -35,7 +35,7 @@ async def cache_by_id(entity, entity_id: int, cache_method): @query.field("get_my_shout") @login_required async def get_my_shout(_, info, shout_id: int): - logger.debug(info) + # logger.debug(info) user_id = info.context.get("user_id", "") author_dict = info.context.get("author", {}) author_id = author_dict.get("id") @@ -54,7 +54,7 @@ async def get_my_shout(_, info, shout_id: int): if not shout: return {"error": "no shout found", "shout": None} - logger.debug(f"got shout authors: {shout.authors} created by {shout.created_by}") + logger.debug(f"got {len(shout.authors)} shout authors, created by {shout.created_by}") is_editor = "editor" in roles logger.debug(f'viewer is{'' if is_editor else ' not'} editor') is_creator = author_id == shout.created_by diff --git a/resolvers/reader.py b/resolvers/reader.py index 1dddd6a6..a14af1d9 100644 --- a/resolvers/reader.py +++ b/resolvers/reader.py @@ -27,12 +27,13 @@ from services.viewed import ViewedStorage from utils.logger import root_logger as logger -def query_shouts(slug=None): +def query_shouts(slug=None, shout_id=None): """ Базовый запрос для получения публикаций с подзапросами статистики, авторов и тем, с агрегацией в строку. :param slug: Опциональный параметр для фильтрации по slug. + :param shout_id: Опциональный параметр для фильтрации по shout_id. :return: Запрос для получения публикаций, aliased_reaction: """ aliased_reaction = aliased(Reaction) @@ -143,6 +144,8 @@ def query_shouts(slug=None): if slug: q = q.where(Shout.slug == slug) + elif shout_id: + q = q.where(Shout.id == shout_id) return q, aliased_reaction @@ -311,7 +314,7 @@ def apply_filters(q, filters, author_id=None): @query.field("get_shout") -async def get_shout(_, info, slug: str): +async def get_shout(_, info, slug: str, shout_id: int): """ Получение публикации по slug. @@ -324,7 +327,7 @@ async def get_shout(_, info, slug: str): with local_session() as session: # Отключение автосохранения with session.no_autoflush: - q, aliased_reaction = query_shouts(slug) + q, _ = query_shouts(slug) results = session.execute(q).first() if results: [ diff --git a/schema/query.graphql b/schema/query.graphql index b28a798a..b71f67c8 100644 --- a/schema/query.graphql +++ b/schema/query.graphql @@ -26,7 +26,7 @@ type Query { load_reactions_by(by: ReactionBy!, limit: Int, offset: Int): [Reaction] # reader - get_shout(slug: String): Shout + get_shout(slug: String, shout_id: Int): Shout load_shouts_by(options: LoadShoutsOptions): [Shout] load_shout_comments(shout: Int!, limit: Int, offset: Int): [Reaction] load_shout_ratings(shout: Int!, limit: Int, offset: Int): [Reaction]