From 495b296508a3b6455b8e0ac9d3a9aff7770c95ab Mon Sep 17 00:00:00 2001 From: Untone Date: Thu, 28 Mar 2024 19:45:21 +0300 Subject: [PATCH] with-stat-cached-fix-2 --- resolvers/author.py | 8 +++++--- resolvers/stat.py | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/resolvers/author.py b/resolvers/author.py index 7f228195..a5208fcd 100644 --- a/resolvers/author.py +++ b/resolvers/author.py @@ -58,12 +58,14 @@ async def get_author(_, _info, slug='', author_id=None): author_dict = None try: author_query = '' + author = None author_dict = None if slug: - author_query = select(Author.id).filter(Author.slug == slug) - author_id = local_session().execute(author_query).scalar() + author_query = select(Author).filter(Author.slug == slug) + [author] = await get_authors_with_stat_cached(author_query) logger.debug(f'found @{slug} with id {author_id}') - if author_id: + if isinstance(author, Author): + author_id = author.id author_query = select(Author.id).filter(Author.id == author_id) cache_key = f'author:{author_id}' cache = await redis.execute('GET', cache_key) diff --git a/resolvers/stat.py b/resolvers/stat.py index da5d5162..deb50b70 100644 --- a/resolvers/stat.py +++ b/resolvers/stat.py @@ -202,7 +202,7 @@ async def get_authors_with_stat_cached(q): records = [] with local_session() as session: for [x] in session.execute(q): - stat_str = await redis.execute('GET', f'author:{x.id if isinstance(x, Author) else x}') + stat_str = await redis.execute('GET', f'author:{x.id}') x.stat = json.loads(stat_str).get('stat') if isinstance(stat_str, str) else {} records.append(x) except Exception as exc: