Release version 0.5.13
[platform/core/appfw/librua.git] / src / rua_internal.c
index 808dd96..287b7fa 100644 (file)
@@ -218,8 +218,8 @@ static int __insert_history(sqlite3 *db, struct rua_rec *rec)
                "INSERT OR REPLACE INTO rua_history ("
                "  pkg_name, app_path, arg, launch_time,"
                "  instance_id, instance_name, icon, uri,"
-               "  image) "
-               "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";
+               "  image, comp_id) "
+               "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
        int r;
        sqlite3_stmt *stmt;
        int idx = 1;
@@ -240,6 +240,7 @@ static int __insert_history(sqlite3 *db, struct rua_rec *rec)
        __BIND_TEXT(db, stmt, idx++, rec->icon ? rec->icon : "");
        __BIND_TEXT(db, stmt, idx++, rec->uri ? rec->uri : "");
        __BIND_TEXT(db, stmt, idx++, rec->image ? rec->image : "");
+       __BIND_TEXT(db, stmt, idx++, rec->comp_id ? rec->comp_id : "");
 
        r = sqlite3_step(stmt);
        if (r != SQLITE_DONE) {
@@ -257,7 +258,7 @@ static int __update_history(sqlite3 *db, struct rua_rec *rec)
 {
        static const char query[] =
                "UPDATE rua_history SET launch_time=? "
-               "WHERE pkg_name=? AND instance_id=?";
+               "WHERE pkg_name=? AND comp_id=? AND instance_id=?";
        int r;
        sqlite3_stmt *stmt;
        int idx = 1;
@@ -270,6 +271,7 @@ static int __update_history(sqlite3 *db, struct rua_rec *rec)
 
        __BIND_INT(db, stmt, idx++, (int)rec->launch_time);
        __BIND_TEXT(db, stmt, idx++, rec->pkg_name);
+       __BIND_TEXT(db, stmt, idx++, rec->comp_id);
        __BIND_TEXT(db, stmt, idx++, rec->instance_id);
 
        r = sqlite3_step(stmt);
@@ -284,6 +286,54 @@ static int __update_history(sqlite3 *db, struct rua_rec *rec)
        return 0;
 }
 
+API int rua_usr_db_update_history(const char *pkg_name,
+               const char *comp_id, int launch_time, uid_t uid)
+{
+       static const char query[] =
+               "UPDATE rua_history SET launch_time=? "
+               "WHERE pkg_name=? AND comp_id=?";
+       int r;
+       sqlite3_stmt *stmt;
+       int idx = 1;
+       sqlite3 *db;
+
+       db = __db_init(uid);
+       if (db == NULL) {
+               LOGE("Error db null");
+               return -1;
+       }
+
+       r = sqlite3_prepare_v2(db, query, strlen(query), &stmt, NULL);
+       if (r != SQLITE_OK) {
+               LOGE("prepare failed: %s", sqlite3_errmsg(db));
+               sqlite3_close_v2(db);
+               return -1;
+       }
+
+       __BIND_INT(db, stmt, idx++, launch_time);
+       __BIND_TEXT(db, stmt, idx++, pkg_name);
+       __BIND_TEXT(db, stmt, idx++, comp_id ? comp_id : "");
+
+       r = sqlite3_step(stmt);
+       if (r != SQLITE_DONE) {
+               LOGE("step failed: %s", sqlite3_errmsg(db));
+               sqlite3_finalize(stmt);
+               sqlite3_close_v2(db);
+               return -1;
+       }
+
+       sqlite3_finalize(stmt);
+       sqlite3_close_v2(db);
+       return r;
+}
+
+API int rua_db_update_history(const char *pkg_name,
+               const char *comp_id, int launch_time)
+{
+       return rua_usr_db_update_history(
+               pkg_name, comp_id, launch_time, getuid());
+}
+
 API int rua_usr_db_add_history(struct rua_rec *rec, uid_t uid)
 {
        int r;
@@ -328,12 +378,12 @@ API int rua_db_add_history(struct rua_rec *rec)
        return rua_usr_db_add_history(rec, getuid());
 }
 
-static int __update_image(sqlite3 *db, const char *pkg_name,
+static int __update_image(sqlite3 *db, const char *pkg_name, const char *comp_id,
                const char *instance_id, const char *image)
 {
        static const char query[] =
                "UPDATE rua_history SET image=? "
-               "WHERE pkg_name=? AND instance_id=?";
+               "WHERE pkg_name=? AND comp_id=? AND instance_id=?";
        sqlite3_stmt *stmt;
        int idx = 1;
        int r;
@@ -346,6 +396,7 @@ static int __update_image(sqlite3 *db, const char *pkg_name,
 
        __BIND_TEXT(db, stmt, idx++, image);
        __BIND_TEXT(db, stmt, idx++, pkg_name);
+       __BIND_TEXT(db, stmt, idx++, comp_id ? comp_id : "");
        __BIND_TEXT(db, stmt, idx++, instance_id ? instance_id : "");
 
        r = sqlite3_step(stmt);
@@ -359,8 +410,8 @@ static int __update_image(sqlite3 *db, const char *pkg_name,
        return 0;
 }
 
-API int rua_usr_db_update_image(const char *pkg_name, const char *instance_id,
-               const char *image, uid_t uid)
+API int rua_usr_db_update_image(const char *pkg_name, const char *comp_id,
+               const char *instance_id, const char *image, uid_t uid)
 {
        int r;
        sqlite3 *db;
@@ -376,7 +427,7 @@ API int rua_usr_db_update_image(const char *pkg_name, const char *instance_id,
                return -1;
        }
 
-       r = __update_image(db, pkg_name, instance_id, image);
+       r = __update_image(db, pkg_name, comp_id, instance_id, image);
        if (r < 0) {
                LOGE("Failed to update image - appid(%s)", pkg_name);
                sqlite3_close_v2(db);
@@ -393,8 +444,9 @@ API int rua_usr_db_update_image(const char *pkg_name, const char *instance_id,
        return r;
 }
 
-API int rua_db_update_image(const char *pkg_name, const char *instance_id,
-               const char *image)
+API int rua_db_update_image(const char *pkg_name, const char *comp_id,
+               const char *instance_id, const char *image)
 {
-       return rua_usr_db_update_image(pkg_name, instance_id, image, getuid());
+       return rua_usr_db_update_image(
+                       pkg_name, comp_id, instance_id, image, getuid());
 }