Add db create API and remove db create logic from .spec file 97/68697/2 accepted/tizen/common/20160511.141833 accepted/tizen/ivi/20160511.080523 accepted/tizen/mobile/20160511.080424 accepted/tizen/tv/20160511.080441 accepted/tizen/wearable/20160511.080458 submit/tizen/20160510.090610
authorHyunho Kang <hhstark.kang@samsung.com>
Mon, 9 May 2016 10:17:35 +0000 (19:17 +0900)
committerHyunho Kang <hhstark.kang@samsung.com>
Tue, 10 May 2016 01:57:15 +0000 (10:57 +0900)
- data-provider-master will create notification db

Change-Id: Iaf9499890f3c9958fac416886012b6db99a8c44d
Signed-off-by: Hyunho Kang <hhstark.kang@samsung.com>
include/badge_db.h
packaging/badge.spec
src/badge_db.c

index 3e068f0..2216f40 100755 (executable)
@@ -41,6 +41,7 @@ int badge_db_get_display_option(const char *pkgname, unsigned int *is_display);
 int badge_db_exec(sqlite3 *db, const char *query, int *num_changes);
 int badge_db_get_list(GList **badge_list);
 int badge_db_is_existing(const char *pkgname, bool *existing);
+int badge_db_init();
 
 #ifdef __cplusplus
        }
index 7611c90..760e261 100755 (executable)
@@ -68,29 +68,6 @@ then
        mkdir -p %{TZ_SYS_DB}
 fi
 
-if [ ! -f %{TZ_SYS_DB}/.%{name}.db ]
-then
-       sqlite3 %{TZ_SYS_DB}/.%{name}.db 'PRAGMA journal_mode = PERSIST;
-               create table if not exists badge_data (
-                       pkgname TEXT NOT NULL,
-                       writable_pkgs TEXT,
-                       badge INTEGER default 0,
-                       rowid INTEGER PRIMARY KEY AUTOINCREMENT,
-                       UNIQUE (pkgname)
-               );
-               create table if not exists badge_option (
-                       pkgname TEXT NOT NULL,
-                       display INTEGER default 1,
-                       UNIQUE (pkgname)
-               );
-       '
-fi
-
-chown app_fw:app_fw %{TZ_SYS_DB}/.%{name}.db
-chown app_fw:app_fw %{TZ_SYS_DB}/.%{name}.db-journal
-chmod 644 %{TZ_SYS_DB}/.%{name}.db
-chmod 644 %{TZ_SYS_DB}/.%{name}.db-journal
-
 %postun -p /sbin/ldconfig
 
 %files
index 67da581..79e8cf9 100755 (executable)
  *
  */
 
+#include <stdio.h>
 #include <stdlib.h>
 #include <stdarg.h>
 #include <sqlite3.h>
+#include <tzplatform_config.h>
+#include <db-util.h>
 
 #include "badge.h"
 #include "badge_log.h"
 #include "badge_error.h"
 #include "badge_internal.h"
 
+#define BADGE_DB_NAME ".badge.db"
+#define CREATE_BADGE_TABLE " \
+PRAGMA journal_mode = PERSIST; \
+create table if not exists badge_data ( \
+       pkgname TEXT NOT NULL, \
+       writable_pkgs TEXT, \
+       badge INTEGER default 0, \
+       rowid INTEGER PRIMARY KEY AUTOINCREMENT, \
+       UNIQUE (pkgname) \
+); \
+create table if not exists badge_option ( \
+       pkgname TEXT NOT NULL, \
+       display INTEGER default 1, \
+       UNIQUE (pkgname) \
+); "
+
+EXPORT_API
+int badge_db_init()
+{
+       int r;
+       sqlite3 *db = NULL;
+       char *errmsg = NULL;
+       char defname[FILENAME_MAX];
+       const char *db_path = tzplatform_getenv(TZ_SYS_DB);
+       if (db_path == NULL) {
+               ERR("fail to get db_path");
+               return BADGE_ERROR_OUT_OF_MEMORY;
+       }
+       snprintf(defname, sizeof(defname), "%s/%s", db_path, BADGE_DB_NAME);
+
+       DBG("db path : %s", defname);
+       r = sqlite3_open_v2(defname, &db, SQLITE_OPEN_CREATE | SQLITE_OPEN_READWRITE, NULL);
+       if (r) {
+               db_util_close(db);
+               ERR("fail to open notification db %d", r);
+               return BADGE_ERROR_IO_ERROR;
+       }
+
+       r = sqlite3_exec(db, CREATE_BADGE_TABLE, NULL, NULL, &errmsg);
+       if (r != SQLITE_OK) {
+               ERR("query error(%d)(%s)", r, errmsg);
+               sqlite3_free(errmsg);
+               db_util_close(db);
+               return BADGE_ERROR_IO_ERROR;
+       }
+
+       db_util_close(db);
+       return BADGE_ERROR_NONE;
+}
+
 EXPORT_API
 int badge_db_is_existing(const char *pkgname, bool *existing)
 {