following-cache-anyway-found
This commit is contained in:
parent
cfe9ac1005
commit
3ab42ecb72
|
@ -156,7 +156,7 @@ async def load_authors_by(_, _info, by, limit, offset):
|
|||
for [a] in authors_nostat:
|
||||
if isinstance(a, Author):
|
||||
author_id = a.id
|
||||
if author_id:
|
||||
if bool(author_id):
|
||||
cached_result = await redis.execute("GET", f"author:{author_id}")
|
||||
if isinstance(cached_result, str):
|
||||
author_dict = json.loads(cached_result)
|
||||
|
@ -187,12 +187,12 @@ async def get_author_follows(_, _info, slug="", user=None, author_id=0):
|
|||
author_id = author.id if not author_id else author_id
|
||||
topics = []
|
||||
authors = []
|
||||
if author_id:
|
||||
if bool(author_id):
|
||||
rkey = f"author:{author_id}:follows-authors"
|
||||
logger.debug(f"getting {author_id} follows authors")
|
||||
cached = await redis.execute("GET", rkey)
|
||||
if not cached:
|
||||
authors = author_follows_authors(author_id)
|
||||
authors = author_follows_authors(author_id) # type: ignore
|
||||
prepared = [author.dict() for author in authors]
|
||||
await redis.execute(
|
||||
"SET", rkey, json.dumps(prepared, cls=CustomJSONEncoder)
|
||||
|
@ -205,7 +205,7 @@ async def get_author_follows(_, _info, slug="", user=None, author_id=0):
|
|||
if cached and isinstance(cached, str):
|
||||
topics = json.loads(cached)
|
||||
if not cached:
|
||||
topics = author_follows_topics(author_id)
|
||||
topics = author_follows_topics(author_id) # type: ignore
|
||||
prepared = [topic.dict() for topic in topics]
|
||||
await redis.execute(
|
||||
"SET", rkey, json.dumps(prepared, cls=CustomJSONEncoder)
|
||||
|
|
|
@ -51,10 +51,7 @@ async def follow(_, info, what, slug):
|
|||
follows = []
|
||||
follows_str = await redis.execute("GET", f"author:{follower_id}:follows-{entity}s")
|
||||
if isinstance(follows_str, str):
|
||||
follows = json.loads(follows_str)
|
||||
|
||||
if not follows:
|
||||
return {"error": "cant find following cache"}
|
||||
follows = json.loads(follows_str) or []
|
||||
|
||||
if what == "AUTHOR":
|
||||
follower_id = int(follower_id)
|
||||
|
@ -105,7 +102,7 @@ async def unfollow(_, info, what, slug):
|
|||
follows = []
|
||||
follows_str = await redis.execute("GET", f"author:{follower_id}:follows-{entity}s")
|
||||
if isinstance(follows_str, str):
|
||||
follows = json.loads(follows_str)
|
||||
follows = json.loads(follows_str) or []
|
||||
|
||||
if what == "AUTHOR":
|
||||
error = author_unfollow(follower_id, slug)
|
||||
|
|
|
@ -137,7 +137,7 @@ async def cache_topic(topic_dict: dict):
|
|||
follower_follows_topics_str = await redis.execute(
|
||||
"GET", f"author:{follower_id}:follows-topics"
|
||||
)
|
||||
if isinstance(follower_follows_topics, str):
|
||||
if isinstance(follower_follows_topics_str, str):
|
||||
follower_follows_topics = json.loads(follower_follows_topics_str)
|
||||
c = 0
|
||||
for old_topic in follower_follows_topics:
|
||||
|
@ -149,7 +149,7 @@ async def cache_topic(topic_dict: dict):
|
|||
# topic not found in the list, so add the new topic with the updated stat field
|
||||
follower_follows_topics.append(topic_dict)
|
||||
|
||||
await redis.set(
|
||||
await redis.execute('SET',
|
||||
"SET",
|
||||
f"author:{follower_id}:follows-topics",
|
||||
json.dumps(follower_follows_topics),
|
||||
|
|
|
@ -109,34 +109,35 @@ def after_author_update(_mapper, _connection, author: Author):
|
|||
result = get_with_stat(q)
|
||||
if result:
|
||||
[author_with_stat] = result
|
||||
asyncio.create_task(cache_author(author_with_stat.dict()))
|
||||
if author_with_stat:
|
||||
_task = asyncio.create_task(cache_author(author_with_stat.dict()))
|
||||
|
||||
|
||||
def after_topic_follower_insert(_mapper, _connection, target: TopicFollower):
|
||||
logger.info(target)
|
||||
asyncio.create_task(
|
||||
handle_topic_follower_change(target.topic, target.follower, True)
|
||||
handle_topic_follower_change(target.topic, target.follower, True) # type: ignore
|
||||
)
|
||||
|
||||
|
||||
def after_topic_follower_delete(_mapper, _connection, target: TopicFollower):
|
||||
logger.info(target)
|
||||
asyncio.create_task(
|
||||
handle_topic_follower_change(target.topic, target.follower, False)
|
||||
handle_topic_follower_change(target.topic, target.follower, False) # type: ignore
|
||||
)
|
||||
|
||||
|
||||
def after_author_follower_insert(_mapper, _connection, target: AuthorFollower):
|
||||
logger.info(target)
|
||||
asyncio.create_task(
|
||||
handle_author_follower_change(target.author, target.follower, True)
|
||||
handle_author_follower_change(target.author, target.follower, True) # type: ignore
|
||||
)
|
||||
|
||||
|
||||
def after_author_follower_delete(_mapper, _connection, target: AuthorFollower):
|
||||
logger.info(target)
|
||||
asyncio.create_task(
|
||||
handle_author_follower_change(target.author, target.follower, False)
|
||||
handle_author_follower_change(target.author, target.follower, False) # type: ignore
|
||||
)
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user