From 7fdc43174f53a1fc99af3d682b5517fae78e0b53 Mon Sep 17 00:00:00 2001
From: Kubat <mael.martin31@gmail.com>
Date: Fri, 8 May 2020 15:51:15 +0200
Subject: [PATCH] Tryfix get stickers

---
 src/database/disk.sql   |  2 +-
 src/database/find.c     | 16 ++++++++--------
 src/database/stickers.c |  6 +++---
 3 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/src/database/disk.sql b/src/database/disk.sql
index 28545751..5ebe5772 100644
--- a/src/database/disk.sql
+++ b/src/database/disk.sql
@@ -104,7 +104,7 @@ CREATE TABLE IF NOT EXISTS 'stickers'
   , name    TEXT    NOT NULL UNIQUE
   );
 
-CREATE TABLE IF NOT EXISTS 'stickers.song'
+CREATE TABLE IF NOT EXISTS 'stickers.kara'
   ( id      INTEGER REFERENCES kara     ON DELETE CASCADE
   , sticker INTEGER REFERENCES stickers ON DELETE CASCADE
   , value   INTEGER NOT NULL
diff --git a/src/database/find.c b/src/database/find.c
index 8cab8488..9df51114 100644
--- a/src/database/find.c
+++ b/src/database/find.c
@@ -37,27 +37,27 @@ database_search_sticker_init(volatile sqlite3 *db, struct lkt_search *ret)
 {
     /* No bound checks in strcats, should be fine. Possible SQL injection, depend on the `type`. */
     static const char *SQL_all_types =
-        "SELECT name, sts.id, value FROM 'stickers' LEFT OUTER JOIN "
-        "( SELECT id, sticker, value FROM 'stickers.song'"
+        "SELECT name, sts.id, value FROM 'stickers' JOIN "
+        "( SELECT id, sticker, value FROM 'stickers.kara'"
         "  UNION"
         "  SELECT id, sticker, value FROM 'stickers.plt'"
         ") AS sts"
         "ON sts.sticker = 'stickers'.id";
     static const char *SQL_one_type =
-        "SELECT name, 'stickers.%s'.id, value "
-        "FROM 'stickers.%s' AS sts"
-        "LEFT OUTER JOIN 'stickers' "
+        "SELECT name, sts.id, value "
+        "FROM 'stickers.%s' AS sts "
+        "JOIN 'stickers' "
         "ON 'stickers'.id = sts.sticker";
     char SQL[LKT_MAX_SQLITE_STATEMENT];
 
     if (ret->st_type == NULL)
         memcpy(SQL, SQL_all_types, strlen(SQL_all_types) + 1);
     else
-        sprintf(SQL, SQL_one_type, ret->st_type, ret->st_type);
+        sprintf(SQL, SQL_one_type, ret->st_type);
     if (ret->st_uri != 0)
-        sprintf(SQL, " AND sts.id = %d", ret->st_uri);
+        sprintf(SQL + strlen(SQL), " AND sts.id = %d", ret->st_uri);
     if (ret->st_op != 0)
-        sprintf(SQL, " AND sts.value %s %d",
+        sprintf(SQL + strlen(SQL), " AND sts.value %s %d",
                 ret->st_op == '>' ? ">=" : ret->st_op == '<' ? "<=" : "=",
                 ret->st_value);
     strcat(SQL, ret->name ? " AND name = ?;" : ";");
diff --git a/src/database/stickers.c b/src/database/stickers.c
index 8863b827..34ca0d4a 100644
--- a/src/database/stickers.c
+++ b/src/database/stickers.c
@@ -58,9 +58,9 @@ database_sticker_set(volatile sqlite3 *db, const char *type, const char *name, i
      * 3 -> the name of the sticker
      */
 
-    if (!strcasecmp(type, "song"))
+    if (!strcasecmp(type, "kara"))
         SQL =
-            "INSERT OR REPLACE INTO 'stickers.song' (id, sticker, value) "
+            "INSERT OR REPLACE INTO 'stickers.kara' (id, sticker, value) "
             "SELECT ?, 'stickers'.id, ? "
             "FROM 'stickers'"
             "WHERE 'stickers'.id = ?;\n";
@@ -94,7 +94,7 @@ database_sticker_delete_specify(volatile sqlite3 *db, const char *type, int uri,
     int ret = false;
 
     /* Base query. */
-    if (strcasecmp("plt", type) && strcasecmp("song", type)) {
+    if (strcasecmp("plt", type) && strcasecmp("kara", type)) {
         LOG_ERROR_SCT("DB", "Type '%s' is invalid", type);
         return false;
     }
-- 
GitLab