Skip to content
Snippets Groups Projects
Commit 384b0a20 authored by Zed's avatar Zed
Browse files

Fix profile caching logic to ignore empty profiles

parent cd484036
No related branches found
No related tags found
No related merge requests found
...@@ -63,7 +63,7 @@ proc cache*(data: PhotoRail; name: string) {.async.} = ...@@ -63,7 +63,7 @@ proc cache*(data: PhotoRail; name: string) {.async.} =
await setex("pr:" & name, baseCacheTime, compress(freeze(data))) await setex("pr:" & name, baseCacheTime, compress(freeze(data)))
proc cache*(data: Profile) {.async.} = proc cache*(data: Profile) {.async.} =
if data.username.len == 0: return if data.username.len == 0 or data.id.len == 0: return
let name = toLower(data.username) let name = toLower(data.username)
pool.withAcquire(r): pool.withAcquire(r):
r.startPipelining() r.startPipelining()
...@@ -93,14 +93,12 @@ proc getProfileId*(username: string): Future[string] {.async.} = ...@@ -93,14 +93,12 @@ proc getProfileId*(username: string): Future[string] {.async.} =
if result == redisNil: if result == redisNil:
result.setLen(0) result.setLen(0)
proc getCachedProfile*(username: string; fetch=true; proc getCachedProfile*(username: string; fetch=true): Future[Profile] {.async.} =
cache=false): Future[Profile] {.async.} =
let prof = await get("p:" & toLower(username)) let prof = await get("p:" & toLower(username))
if prof != redisNil: if prof != redisNil:
uncompress(prof).thaw(result) uncompress(prof).thaw(result)
elif fetch: elif fetch:
result = await getProfile(username) result = await getProfile(username)
if cache: await cache(result)
proc getCachedPhotoRail*(name: string): Future[PhotoRail] {.async.} = proc getCachedPhotoRail*(name: string): Future[PhotoRail] {.async.} =
if name.len == 0: return if name.len == 0: return
......
...@@ -31,7 +31,10 @@ proc fetchSingleTimeline*(after: string; query: Query; skipRail=false): ...@@ -31,7 +31,10 @@ proc fetchSingleTimeline*(after: string; query: Query; skipRail=false):
profile = await getCachedProfile(name) profile = await getCachedProfile(name)
profileId = if profile.suspended: "s" profileId = if profile.suspended: "s"
else: profile.id else: profile.id
await cacheProfileId(profile.username, profileId)
if profileId.len > 0:
await cacheProfileId(profile.username, profileId)
fetched = true fetched = true
if profileId.len == 0 or profile.protected: if profileId.len == 0 or profile.protected:
...@@ -66,7 +69,8 @@ proc fetchSingleTimeline*(after: string; query: Query; skipRail=false): ...@@ -66,7 +69,8 @@ proc fetchSingleTimeline*(after: string; query: Query; skipRail=false):
break break
if profile.username.len == 0: if profile.username.len == 0:
profile = await getCachedProfile(name, cache=true) profile = await getCachedProfile(name)
fetched = true
if fetched and not found: if fetched and not found:
await cache(profile) await cache(profile)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment