From 9901d2eb809fe297b646b89065798d0b9b689f8e Mon Sep 17 00:00:00 2001 From: Kubat <mael.martin31@gmail.com> Date: Sun, 2 May 2021 11:37:13 +0200 Subject: [PATCH] CACHE: Cache only non-cached karas with the caching thread --- inc/lektor/database.h | 2 +- src/base/launch.c | 10 ++++++++-- src/database/find.c | 6 +++--- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/inc/lektor/database.h b/inc/lektor/database.h index 2a3e87e1..4f4ef9cc 100644 --- a/inc/lektor/database.h +++ b/inc/lektor/database.h @@ -65,7 +65,7 @@ bool database_get_kara_mtime_path (volatile sqlite3 *db, char filepath[PATH_MA bool database_get_kara_duration_path(volatile sqlite3 *db, char filepath[PATH_MAX], uint64_t *duration); void database_cache_kara (volatile sqlite3 *db, int id); -void database_get_all_kara(volatile sqlite3 *db, int **ret_ids, size_t *ret_ids_len); +void database_get_all_non_cached_kara(volatile sqlite3 *db, int **ret_ids, size_t *ret_ids_len); /* Update the database. */ bool database_update (volatile sqlite3 *db, const char *kara_dir, int check_timestamp); diff --git a/src/base/launch.c b/src/base/launch.c index d8c49a72..d59d0da0 100644 --- a/src/base/launch.c +++ b/src/base/launch.c @@ -180,14 +180,20 @@ ___caching_walker(void *args) size_t ids_count = 0; int *ids = NULL; - database_get_all_kara(db, &ids, &ids_count); + database_get_all_non_cached_kara(db, &ids, &ids_count); if (ids == NULL || ids_count == 0) { LOG_ERROR("CACHING", "No kara present in the database, exit caching thread"); return NULL; } - free(ids); + LOG_INFO("CACHE", "Begin to cache %ld karas", ids_count); + + for (size_t index = 0; index < ids_count; ++index) { + database_cache_kara(db, ids[index]); + } + LOG_INFO("CACHE", "Finished caching %ld karas", ids_count); + free(ids); return NULL; } diff --git a/src/database/find.c b/src/database/find.c index 495fdac3..7bea8d7f 100644 --- a/src/database/find.c +++ b/src/database/find.c @@ -399,10 +399,10 @@ error: } void -database_get_all_kara(volatile sqlite3 *db, int **ret_ids, size_t *ret_ids_len) +database_get_all_non_cached_kara(volatile sqlite3 *db, int **ret_ids, size_t *ret_ids_len) { - static const char *SQL_DATA = "SELECT id FROM kara;"; - static const char *SQL_COUNT = "SELECT count(id) FROM kara;"; + static const char *SQL_DATA = "SELECT id FROM kara WHERE cached_mtime = 0 OR cached_duration = 0;"; + static const char *SQL_COUNT = "SELECT count(id) FROM kara WHERE cached_mtime = 0 OR cached_duration = 0;"; sqlite3_stmt *stmt = NULL; size_t index = 0; -- GitLab