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"
25 static int __exec(sqlite3 *db, char *query)
33 r = sqlite3_exec(db, query, NULL, NULL, &errmsg);
43 static int __create_table(sqlite3 *db)
47 r = __exec(db, CREATE_RUA_HISTORY_TABLE);
54 static sqlite3 *__db_init(uid_t uid)
59 r = _rua_util_open_db(&db, SQLITE_OPEN_CREATE | SQLITE_OPEN_READWRITE,
64 r = __create_table(db);
73 int rua_db_delete_history(bundle *b)
75 return rua_usr_db_delete_history(b, getuid());
78 int rua_usr_db_delete_history(bundle *b, uid_t uid)
82 char query[QUERY_MAXLEN];
83 char *pkg_name = NULL;
84 char *app_path = NULL;
85 char *instance_id = NULL;
91 LOGE("Error db null");
96 bundle_get_str(b, AUL_K_RUA_PKGNAME, &pkg_name);
97 bundle_get_str(b, AUL_K_RUA_APPPATH, &app_path);
98 bundle_get_str(b, AUL_K_RUA_INSTANCE_ID, &instance_id);
102 snprintf(query, sizeof(query),
103 "DELETE FROM rua_history WHERE pkg_name = '%s' "
104 "AND instance_id = '%s';",
105 pkg_name, instance_id ? instance_id : "");
106 } else if (app_path) {
107 snprintf(query, sizeof(query),
108 "DELETE FROM rua_history WHERE app_path = '%s' "
109 "AND instance_id = '%s';",
110 app_path, instance_id ? instance_id : "");
112 snprintf(query, sizeof(query), "DELETE FROM rua_history;");
115 LOGI("rua_delete_history_from_db : %s", query);
116 r = sqlite3_exec(db, query, NULL, NULL, &errmsg);
118 if (r != SQLITE_OK) {
119 LOGE("fail to exec delete query %s : %s", query, errmsg);
120 sqlite3_free(errmsg);
124 r = rua_dbus_send_update_signal(DELETE);
126 LOGE("[RUA SEND SIGNAL ERROR] \n");
137 int rua_db_add_history(struct rua_rec *rec)
139 return rua_usr_db_add_history(rec, getuid());
142 int rua_usr_db_add_history(struct rua_rec *rec, uid_t uid)
145 char query[QUERY_MAXLEN];
148 if (rec == NULL || rec->pkg_name == NULL || rec->app_path == NULL) {
149 LOGE("Invalid parameter");
155 LOGE("Error db null");
159 if (rec->instance_id &&
160 (rec->instance_name == NULL || rec->icon == NULL ||
162 snprintf(query, sizeof(query),
163 "UPDATE %s SET launch_time = %d "
164 "WHERE pkg_name = %s AND instance_id = %s;",
166 (int)rec->launch_time,
170 snprintf(query, sizeof(query),
171 "INSERT OR REPLACE INTO %s "
172 "(pkg_name, app_path, arg, launch_time, "
173 "instance_id, instance_name, icon, uri) "
174 "VALUES (\"%s\", \"%s\", \"%s\", %d, "
175 "\"%s\", \"%s\", \"%s\", \"%s\");",
179 rec->arg ? rec->arg : "",
180 (int)rec->launch_time,
181 rec->instance_id ? rec->instance_id : "",
182 rec->instance_name ? rec->instance_name : "",
183 rec->icon ? rec->icon : "",
184 rec->uri ? rec->uri : "");
187 r = __exec(db, query);
189 LOGE("[RUA ADD HISTORY ERROR] %s\n", query);
194 r = rua_dbus_send_update_signal(ADD);
196 LOGE("[RUA SEND SIGNAL ERROR] \n");