Refactor db creation logic 92/147092/4
authorSeungha Son <seungha.son@samsung.com>
Fri, 1 Sep 2017 02:17:50 +0000 (11:17 +0900)
committerSeungha Son <seungha.son@samsung.com>
Mon, 4 Sep 2017 22:29:16 +0000 (07:29 +0900)
Signed-off-by: Seungha Son <seungha.son@samsung.com>
Change-Id: I37b3525a05474cb7ca98b66f0560ca5c0caa5401

lib/CMakeLists.txt
lib/include/shortcut_db.h
lib/src/shortcut_db.c
packaging/libshortcut.spec

index 0ea5d25..a61b117 100755 (executable)
@@ -18,6 +18,7 @@ pkg_check_modules(svc_pkgs REQUIRED
        capi-base-common
        aul
        capi-system-info
+       libtzplatform-config
 )
 
 FOREACH(flag ${svc_pkgs_CFLAGS})
index 54c9783..bb021b1 100644 (file)
@@ -34,6 +34,7 @@ typedef struct shortcut_info {
        char *extra_data;
 } shortcut_info_s;
 
+int shortcut_db_init();
 int shortcut_db_get_list(const char *package_name, GList **shortcut_list);
 
 
index 4ce7abb..7ae8dbe 100755 (executable)
 #include <shortcut_db.h>
 #include <vconf.h>
 #include <vconf-keys.h>
+#include <tzplatform_config.h>
 
 #include "shortcut_error.h"
 
+#define QUERY_CREATE_SHORTCUT_TABLE \
+       "PRAGMA journal_mode = PERSIST;" \
+       "CREATE TABLE IF NOT EXISTS shortcut_service (\n" \
+       "  id INTEGER PRIMARY KEY AUTOINCREMENT,\n" \
+       "  pkgid TEXT,\n" \
+       "  appid TEXT,\n" \
+       "  icon TEXT,\n" \
+       "  name TEXT,\n" \
+       "  extra_key TEXT,\n" \
+       "  extra_data TEXT);\n" \
+       "CREATE TABLE IF NOT EXISTS shortcut_name (\n" \
+       "  id INTEGER,\n" \
+       "  pkgid TEXT,\n" \
+       "  lang TEXT,\n" \
+       "  name TEXT,\n" \
+       "  icon TEXT);"
+
+EAPI int shortcut_db_init()
+{
+       int ret = SHORTCUT_ERROR_NONE;
+       int sql_ret;
+       sqlite3 *db = NULL;
+       char *errmsg = NULL;
+
+       sql_ret = sqlite3_open_v2(DB_PATH, &db,
+                       SQLITE_OPEN_CREATE | SQLITE_OPEN_READWRITE, NULL);
+       if (sql_ret != SQLITE_OK) {
+               SHORTCUT_ERR("Failed to open db[%d]", sql_ret);
+               return SHORTCUT_ERROR_IO_ERROR;
+       }
+
+       sql_ret = sqlite3_exec(db, QUERY_CREATE_SHORTCUT_TABLE,
+                                       NULL, NULL, &errmsg);
+       if (sql_ret != SQLITE_OK) {
+               SHORTCUT_ERR("Failed to exec query [%d][%s]", sql_ret, errmsg);
+               ret = SHORTCUT_ERROR_IO_ERROR;
+       }
+
+       if (errmsg)
+               sqlite3_free(errmsg);
+       if (db)
+               sqlite3_close(db);
+
+       return ret;
+}
+
 static sqlite3 *_open_db(void)
 {
        int ret;
index 80393c8..8910408 100755 (executable)
@@ -65,34 +65,6 @@ then
        mkdir %{TZ_SYS_DB}
 fi
 
-if [ ! -f %{TZ_SYS_DB}/.shortcut_service.db ]
-then
-       sqlite3 %{TZ_SYS_DB}/.shortcut_service.db 'PRAGMA journal_mode = PERSIST;
-               CREATE TABLE shortcut_service (
-               id INTEGER PRIMARY KEY AUTOINCREMENT,
-               pkgid TEXT,
-               appid TEXT,
-               icon TEXT,
-               name TEXT,
-               extra_key TEXT,
-               extra_data TEXT);
-
-               CREATE TABLE shortcut_name (
-               id INTEGER,
-               pkgid TEXT,
-               lang TEXT,
-               name TEXT,
-               icon TEXT);
-       '
-fi
-
-chmod 644 %{TZ_SYS_DB}/.shortcut_service.db
-chmod 644 %{TZ_SYS_DB}/.shortcut_service.db-journal
-chsmack -a System %{TZ_SYS_DB}/.shortcut_service.db
-chsmack -a System %{TZ_SYS_DB}/.shortcut_service.db-journal
-chown app_fw:app_fw %{TZ_SYS_DB}/.shortcut_service.db
-chown app_fw:app_fw %{TZ_SYS_DB}/.shortcut_service.db-journal
-
 %postun -n %{name} -p /sbin/ldconfig
 
 %files -n libshortcut