This commit is contained in:
tonyrewin 2022-10-05 15:22:56 +03:00
parent ff568d7dff
commit 0c882dfc44
2 changed files with 17 additions and 19 deletions

View File

@ -110,11 +110,11 @@ async def get_search_results(_, _info, searchtext, offset, limit):
@query.field("shoutsByAuthors") @query.field("shoutsByAuthors")
async def shouts_by_authors(_, _info, slugs, offset, limit): async def shouts_by_authors(_, _info, slugs, offset=0, limit=100):
async with ShoutsCache.lock: async with ShoutsCache.lock:
shouts = {} shouts = {}
for author in slugs: for author in slugs:
for shouts_by_author in ShoutsCache.by_author.get(author, []): shouts_by_author = list(ShoutsCache.by_author.get(author, {}).values())
for s in shouts_by_author: for s in shouts_by_author:
for a in s.authors: for a in s.authors:
a.caption = await ShoutAuthorStorage.get_author_caption(s.slug, a.slug) a.caption = await ShoutAuthorStorage.get_author_caption(s.slug, a.slug)
@ -130,7 +130,7 @@ async def shouts_by_topics(_, _info, slugs, offset=0, limit=100):
async with ShoutsCache.lock: async with ShoutsCache.lock:
shouts = {} shouts = {}
for topic in slugs: for topic in slugs:
for shouts_by_topic in ShoutsCache.by_topic.get(topic, []): shouts_by_topic = list(ShoutsCache.by_topic.get(topic, {}).values())
for s in shouts_by_topic: for s in shouts_by_topic:
for a in s.authors: for a in s.authors:
a.caption = await ShoutAuthorStorage.get_author_caption(s.slug, a.slug) a.caption = await ShoutAuthorStorage.get_author_caption(s.slug, a.slug)

View File

@ -65,13 +65,11 @@ class ShoutsCache:
async with ShoutsCache.lock: async with ShoutsCache.lock:
for s in shouts: for s in shouts:
for a in s.authors: for a in s.authors:
ShoutsCache.by_author[a.slug] = ShoutsCache.by_author.get(a.slug, []) ShoutsCache.by_author[a.slug] = ShoutsCache.by_author.get(a.slug, {})
if s not in ShoutsCache.by_author[a.slug]: ShoutsCache.by_author[a.slug][s.slug] = s
ShoutsCache.by_author[a.slug].append(s)
for t in s.topics: for t in s.topics:
ShoutsCache.by_topic[t.slug] = ShoutsCache.by_topic.get(t.slug, []) ShoutsCache.by_topic[t.slug] = ShoutsCache.by_topic.get(t.slug, {})
if s not in ShoutsCache.by_topic[t.slug]: ShoutsCache.by_topic[t.slug][s.slug] = s
ShoutsCache.by_topic[t.slug].append(s)
print("[zine.cache] indexed by %d topics " % len(ShoutsCache.by_topic.keys())) print("[zine.cache] indexed by %d topics " % len(ShoutsCache.by_topic.keys()))
print("[zine.cache] indexed by %d authors " % len(ShoutsCache.by_author.keys())) print("[zine.cache] indexed by %d authors " % len(ShoutsCache.by_author.keys()))
ShoutsCache.recent_published = shouts ShoutsCache.recent_published = shouts