From fd3038f1b33ca85b15228e3ca84b6e4689dab304 Mon Sep 17 00:00:00 2001
From: Kubat <mael.martin31@gmail.com>
Date: Tue, 12 Apr 2022 23:03:37 +0200
Subject: [PATCH] FIX: Fix cache process => don't use the cache to build the
 cache...

---
 inc/lektor/database.h |  1 +
 src/database/cache.c  |  4 ++--
 src/database/queue.c  | 18 ++++++++++++++++++
 3 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/inc/lektor/database.h b/inc/lektor/database.h
index f1578152..1b193ee1 100644
--- a/inc/lektor/database.h
+++ b/inc/lektor/database.h
@@ -67,6 +67,7 @@ bool database_queue_get_current_file (lkt_db *db, char filepath[PATH_MAX]);
 
 bool database_get_kara_id           (lkt_db *db, char filepath[PATH_MAX], int *id);
 bool database_get_kara_path         (lkt_db *db, int id, char filepath[PATH_MAX]);
+bool database_get_kara_path_no_cache(lkt_db *db, int id, char filepath[PATH_MAX]);
 bool database_get_kara_position     (lkt_db *db, int id, int *pos);
 bool database_get_kara_mtime_id     (lkt_db *db, int id, uint64_t *mtime);
 bool database_get_kara_duration_id  (lkt_db *db, int id, uint64_t *duration);
diff --git a/src/database/cache.c b/src/database/cache.c
index 18deada8..d7c033b8 100644
--- a/src/database/cache.c
+++ b/src/database/cache.c
@@ -60,7 +60,7 @@ database_cache_kara_magic(lkt_db *db, int id)
     /* Get the filepath */
     char filename[PATH_MAX];
     memset(filename, 0, sizeof(filename));
-    database_get_kara_path(db, id, filename);
+    database_get_kara_path_no_cache(db, id, filename);
     if (filename[0] == 0) {
         LOG_ERROR("CACHE", "Failed to get filename for kara %ld", id);
         return;
@@ -152,7 +152,7 @@ database_cache_kara(lkt_db *db, int id)
 {
     char filepath[PATH_MAX];
 
-    if (!database_get_kara_path(db, id, filepath)) {
+    if (!database_get_kara_path_no_cache(db, id, filepath)) {
         LOG_ERROR("CACHE", "Failed to get a path for kara %d, don't update cache", id);
         return;
     }
diff --git a/src/database/queue.c b/src/database/queue.c
index b8f5007d..9f3f56d1 100644
--- a/src/database/queue.c
+++ b/src/database/queue.c
@@ -900,6 +900,24 @@ error:
     return status;
 }
 
+bool
+database_get_kara_path_no_cache(lkt_db *db, int id, char filepath[PATH_MAX])
+{
+    bool ret_code          = false;
+    sqlite3_stmt *stmt     = NULL;
+    static const char *SQL = "SELECT file_path FROM kara WHERE id = ?;";
+    RETURN_UNLESS(id && db, "Invalid argument", false);
+    SQLITE_PREPARE(db, stmt, SQL, error);
+    SQLITE_BIND_INT(db, stmt, 1, id, error);
+    SQLITE_STEP_ROW(db, stmt, error);
+    if (filepath != NULL)
+        safe_strncpy(filepath, sqlite3_column_chars(stmt, 0), PATH_MAX);
+    ret_code = true;
+error:
+    sqlite3_finalize(stmt);
+    return ret_code;
+}
+
 bool
 database_get_kara_path(lkt_db *db, int id, char filepath[PATH_MAX])
 {
-- 
GitLab