From 4383d99362cb680c9af2eba33a3f6e9bfcdba352 Mon Sep 17 00:00:00 2001 From: Ludwig Kristoffersson Date: Wed, 8 Mar 2023 22:18:02 +0100 Subject: [PATCH] add invalidate_query_cache command that invalidates all query caches --- db/cmd.py | 17 +++++++++++++++++ db/crud.py | 5 +++++ db/models/lecture.py | 5 +++++ setup.py | 1 + 4 files changed, 28 insertions(+) create mode 100644 db/cmd.py diff --git a/db/cmd.py b/db/cmd.py new file mode 100644 index 0000000..346bb07 --- /dev/null +++ b/db/cmd.py @@ -0,0 +1,17 @@ + + +from db.crud import get_all_lectures + + +def invalidate_all_query_caches(): + print('invalidating all query caches') + + lectures = get_all_lectures() + for lecture in lectures: + print(f'invalidating cache for lecture {lecture}: ', end='') + queries = lecture.queries() + print(f'found {len(queries)} queries', end='') + for query in queries: + query.cache_is_valid = False + query.save() + print(' done.') diff --git a/db/crud.py b/db/crud.py index 43cbd46..2d30f04 100644 --- a/db/crud.py +++ b/db/crud.py @@ -120,6 +120,11 @@ def create_query(lecture, query_string: str): return query +def find_all_queries_for_lecture(lecture): + from db.models.query import Query + return Query.select().where(Query.lecture_id == lecture.id) + + # Message def save_message_for_analysis(analysis, title: str, body: Union[str, None] = None): from db.models.message import Message diff --git a/db/models/lecture.py b/db/models/lecture.py index 2e61145..9ff1fc1 100644 --- a/db/models/lecture.py +++ b/db/models/lecture.py @@ -16,6 +16,7 @@ from db.crud import ( find_all_courses_relations_for_lecture_id, find_all_courses_for_lecture_id, + find_all_queries_for_lecture, ) @@ -150,6 +151,10 @@ def get_last_analysis(self): .order_by(Analysis.modified_at.desc()) .first()) + def queries(self): + queries = find_all_queries_for_lecture(self) + return queries + def courses(self): out = [] diff --git a/setup.py b/setup.py index c31920a..37358de 100644 --- a/setup.py +++ b/setup.py @@ -35,6 +35,7 @@ 'create_migration = db.migrations:create_migration', 'migrate_up = db.migrations:run_migrations', 'migrate_down = db.migrations:rollback', + 'invalidate_query_cache = db.cmd:invalidate_all_query_caches', 'analysis_queues_restart = jobs:analysis_queues_restart', 'dispatch_fetch_metadata_for_all_lectures = jobs.cmd:fetch_metadata_for_all_lectures', 'dispatch_capture_preview_for_all_lectures = jobs.cmd:capture_preview_for_all_lectures',