2 * Copyright (c) 2020 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.
17 #include <tzplatform_config.h>
21 #include "alias-appid/appsvc_db.hh"
22 #include "common/log_private.hh"
26 static const uid_t ROOT_UID = 0;
27 static const uid_t GLOBAL_USER = tzplatform_getuid(TZ_SYS_GLOBALAPP_USER);
29 AppSvcDB::AppSvcDB(uid_t uid) : Database(GetDBPath(uid)) {
32 AppSvcDB::~AppSvcDB() = default;
34 void AppSvcDB::Insert(const std::string& alias_appid,
35 const std::string& appid) {
36 static const char query[] = "INSERT OR REPLACE INTO "
37 "alias_info(alias_appid, appid) VALUES(?, ?);";
39 __PREPARE_V2(GetHandle(), query, strlen(query), stmt);
40 std::unique_ptr<sqlite3_stmt, decltype(sqlite3_finalize)*> stmt_ptr(
41 stmt, sqlite3_finalize);
42 __BIND_TEXT(GetHandle(), stmt, 1, alias_appid.c_str());
43 __BIND_TEXT(GetHandle(), stmt, 2, appid.c_str());
44 __STEP(GetHandle(), stmt);
47 void AppSvcDB::Delete(const std::string& alias_appid,
48 const std::string& appid) {
49 static const char query[] = "DELETE FROM alias_info WHERE "
50 "alias_appid = ? AND appid = ?;";
52 __PREPARE_V2(GetHandle(), query, strlen(query), stmt);
53 std::unique_ptr<sqlite3_stmt, decltype(sqlite3_finalize)*> stmt_ptr(
54 stmt, sqlite3_finalize);
55 __BIND_TEXT(GetHandle(), stmt, 1, alias_appid.c_str());
56 __BIND_TEXT(GetHandle(), stmt, 2, appid.c_str());
57 __STEP(GetHandle(), stmt);
60 void AppSvcDB::Delete(const std::string& appid) {
61 static const char query[] = "DELETE FROM alias_info WHERE appid = ?;";
63 __PREPARE_V2(GetHandle(), query, strlen(query), stmt);
64 std::unique_ptr<sqlite3_stmt, decltype(sqlite3_finalize)*> stmt_ptr(
65 stmt, sqlite3_finalize);
66 __BIND_TEXT(GetHandle(), stmt, 1, appid.c_str());
67 __STEP(GetHandle(), stmt);
70 std::string AppSvcDB::GetDBPath(uid_t uid) {
72 if (uid == ROOT_UID || uid == GLOBAL_USER) {
73 db_path = std::string(tzplatform_getenv(TZ_SYS_DB)) + "/.appsvc.db";
75 db_path = std::string(tzplatform_getenv(TZ_SYS_DB)) + "/user/" +
76 std::to_string(uid) + "/.appsvc.db";