Skip to content

Commit 552a37c

Browse files
author
codeEmpress1
committed
add cache to snap listing page
1 parent a295bcf commit 552a37c

1 file changed

Lines changed: 19 additions & 1 deletion

File tree

webapp/endpoints/publisher/listing.py

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,26 @@
1818
from webapp.store.logic import (
1919
get_categories,
2020
)
21+
from cache.cache_utility import redis_cache
2122

2223
dashboard = Dashboard(api_session)
2324
device_gateway = DeviceGW("snap", api_session)
2425

26+
def get_snap_info_key(snap_name):
27+
user_id = flask.session.get(
28+
"publisher", {}
29+
).get("identity_url", "").split("+id")[1]
30+
31+
return f"{user_id}:snap_info:{snap_name}"
2532

2633
@login_required
2734
def get_listing_data(snap_name):
28-
snap_details = dashboard.get_snap_info(flask.session, snap_name)
35+
snap_info_key = get_snap_info_key(snap_name)
36+
snap_details = redis_cache.get(snap_info_key, expected_type=dict)
37+
38+
if not snap_details:
39+
snap_details = dashboard.get_snap_info(flask.session, snap_name)
40+
redis_cache.set(snap_info_key, snap_details, ttl=3600)
2941

3042
details_metrics_enabled = snap_details["public_metrics_enabled"]
3143
details_blacklist = snap_details.get("public_metrics_blacklist", [])
@@ -184,6 +196,9 @@ def post_listing_data(snap_name):
184196
dashboard.snap_screenshots(
185197
flask.session, snap_id, images_json, images_files
186198
)
199+
# Invalidate cache after successful screenshot update
200+
snap_info_key = get_snap_info_key(snap_name)
201+
redis_cache.delete(snap_info_key)
187202
except StoreApiResponseErrorList as api_response_error_list:
188203
if api_response_error_list.status_code != 404:
189204
error_list = error_list + api_response_error_list.errors
@@ -198,6 +213,9 @@ def post_listing_data(snap_name):
198213

199214
try:
200215
dashboard.snap_metadata(flask.session, snap_id, body_json)
216+
# Invalidate cache after successful metadata update
217+
snap_info_key = get_snap_info_key(snap_name)
218+
redis_cache.delete(snap_info_key)
201219
except StoreApiResponseErrorList as api_response_error_list:
202220
if api_response_error_list.status_code != 404:
203221
error_list = error_list + api_response_error_list.errors

0 commit comments

Comments
 (0)