2 * Copyright (c) 2016 Samsung Electronics Co., Ltd. All rights reserved.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
20 #include "rua_internal.h"
21 #include "db-schema.h"
24 static int __exec(sqlite3 *db, char *query)
32 r = sqlite3_exec(db, query, NULL, NULL, &errmsg);
42 static int __create_table(sqlite3 *db)
46 r = __exec(db, CREATE_RUA_HISTORY_TABLE);
53 static sqlite3 *__db_init(uid_t uid)
58 r = _rua_util_open_db(&db, SQLITE_OPEN_CREATE | SQLITE_OPEN_READWRITE,
63 r = __create_table(db);
72 int rua_db_delete_history(bundle *b)
74 return rua_usr_db_delete_history(b, getuid());
77 int rua_usr_db_delete_history(bundle *b, uid_t uid)
81 char query[QUERY_MAXLEN];
82 char *pkg_name = NULL;
83 char *app_path = NULL;
84 char *instance_id = NULL;
90 LOGE("Error db null");
95 bundle_get_str(b, AUL_K_RUA_PKGNAME, &pkg_name);
96 bundle_get_str(b, AUL_K_RUA_APPPATH, &app_path);
97 bundle_get_str(b, AUL_K_RUA_INSTANCE_ID, &instance_id);
101 snprintf(query, sizeof(query),
102 "DELETE FROM rua_history WHERE pkg_name = '%s' "
103 "AND instance_id = '%s';",
104 pkg_name, instance_id ? instance_id : "");
105 } else if (app_path) {
106 snprintf(query, sizeof(query),
107 "DELETE FROM rua_history WHERE app_path = '%s' "
108 "AND instance_id = '%s';",
109 app_path, instance_id ? instance_id : "");
111 snprintf(query, sizeof(query), "DELETE FROM rua_history;");
114 LOGI("rua_delete_history_from_db : %s", query);
115 r = sqlite3_exec(db, query, NULL, NULL, &errmsg);
117 if (r != SQLITE_OK) {
118 LOGE("fail to exec delete query %s : %s", query, errmsg);
119 sqlite3_free(errmsg);
129 int rua_db_add_history(struct rua_rec *rec)
131 return rua_usr_db_add_history(rec, getuid());
134 int rua_usr_db_add_history(struct rua_rec *rec, uid_t uid)
137 char query[QUERY_MAXLEN];
140 if (rec == NULL || rec->pkg_name == NULL || rec->app_path == NULL) {
141 LOGE("Invalid parameter");
147 LOGE("Error db null");
151 if (rec->instance_id &&
152 (rec->instance_name == NULL || rec->icon == NULL ||
154 snprintf(query, sizeof(query),
155 "UPDATE %s SET launch_time = %d "
156 "WHERE pkg_name = %s AND instance_id = %s;",
158 (int)rec->launch_time,
162 snprintf(query, sizeof(query),
163 "INSERT OR REPLACE INTO %s "
164 "(pkg_name, app_path, arg, launch_time, "
165 "instance_id, instance_name, icon, uri) "
166 "VALUES (\"%s\", \"%s\", \"%s\", %d, "
167 "\"%s\", \"%s\", \"%s\", \"%s\");",
171 rec->arg ? rec->arg : "",
172 (int)rec->launch_time,
173 rec->instance_id ? rec->instance_id : "",
174 rec->instance_name ? rec->instance_name : "",
175 rec->icon ? rec->icon : "",
176 rec->uri ? rec->uri : "");
179 r = __exec(db, query);
181 LOGE("[RUA ADD HISTORY ERROR] %s\n", query);