#include "manager/pkginfo_manager.h"
#include <sys/types.h>
-
-#include <sqlite3.h>
#include <glib.h>
#include <parcel.hh>
#include <utility>
#include <vector>
-#include "pkgmgr_parser.h"
#include "pkgmgrinfo_private.h"
#include "pkgmgr_query_index.h"
#include "client/pkginfo_client.hh"
-#include "common/database/abstract_db_handler.hh"
-#include "common/database/pkg_set_db_handler.hh"
#include "common/parcel/appinfo_parcelable.hh"
#include "common/parcel/certinfo_parcelable.hh"
#include "common/parcel/command_parcelable.hh"
+#include "common/parcel/create_db_parcelable.hh"
#include "common/parcel/depinfo_parcelable.hh"
#include "common/parcel/filter_parcelable.hh"
+#include "common/parcel/parcelable_factory.hh"
#include "common/parcel/pkginfo_parcelable.hh"
#include "common/parcel/query_parcelable.hh"
#include "common/parcel/result_parcelable.hh"
#include "logging.hh"
+#include "pkg_write_type.hh"
+#include "db_type.hh"
#ifdef LOG_TAG
#undef LOG_TAG
#define EXPORT_API __attribute__((visibility("default")))
namespace pcp = pkgmgr_common::parcel;
-namespace pcd = pkgmgr_common::database;
extern "C" EXPORT_API int _pkginfo_get_packages(uid_t uid,
pkgmgrinfo_filter_x* filter, int flag, GHashTable* packages) {
std::shared_ptr<pcp::AbstractParcelable> parcelable(
new pcp::QueryParcelable(uid,
{ QUERY_INDEX_APPINFO_GET_LOCALED_LABEL, { appid, locale, appid } },
- pcd::AbstractDBHandler::DBType::DB_TYPE_FILE_PKGDB,
- pcd::AbstractDBHandler::OperationType::OPERATION_TYPE_READ));
+ pkgmgr_common::DBType::DB_TYPE_FILE_PKGDB,
+ pkgmgr_common::DBOperationType::OPERATION_TYPE_READ));
pkgmgr_client::PkgInfoClient client(parcelable, uid,
pkgmgr_common::ReqType::QUERY);
std::shared_ptr<pcp::AbstractParcelable> parcelable(
new pcp::QueryParcelable(uid,
{ QUERY_INDEX_APPINFO_GET_DATACONTROL_INFO, { providerid, type } },
- pcd::AbstractDBHandler::DBType::DB_TYPE_FILE_PKGDB,
- pcd::AbstractDBHandler::OperationType::OPERATION_TYPE_READ));
+ pkgmgr_common::DBType::DB_TYPE_FILE_PKGDB,
+ pkgmgr_common::DBOperationType::OPERATION_TYPE_READ));
pkgmgr_client::PkgInfoClient client(parcelable, uid,
pkgmgr_common::ReqType::QUERY);
std::shared_ptr<pcp::AbstractParcelable> parcelable(
new pcp::QueryParcelable(uid,
{ QUERY_INDEX_APPINFO_GET_DATACONTROL_APPID, { providerid } },
- pcd::AbstractDBHandler::DBType::DB_TYPE_FILE_PKGDB,
- pcd::AbstractDBHandler::OperationType::OPERATION_TYPE_READ));
+ pkgmgr_common::DBType::DB_TYPE_FILE_PKGDB,
+ pkgmgr_common::DBOperationType::OPERATION_TYPE_READ));
pkgmgr_client::PkgInfoClient client(parcelable, uid,
pkgmgr_common::ReqType::QUERY);
new pcp::QueryParcelable(uid,
{ QUERY_INDEX_APPINFO_GET_DATACONTROL_TRUSTED_INFO,
{ providerid, type } },
- pcd::AbstractDBHandler::DBType::DB_TYPE_FILE_PKGDB,
- pcd::AbstractDBHandler::OperationType::OPERATION_TYPE_READ));
+ pkgmgr_common::DBType::DB_TYPE_FILE_PKGDB,
+ pkgmgr_common::DBOperationType::OPERATION_TYPE_READ));
pkgmgr_client::PkgInfoClient client(parcelable, uid,
pkgmgr_common::ReqType::QUERY);
new pcp::QueryParcelable(uid,
{ QUERY_INDEX_APPINFO_GET_DATACONTROL_PRIVILEGES,
{ providerid, type } },
- pcd::AbstractDBHandler::DBType::DB_TYPE_FILE_PKGDB,
- pcd::AbstractDBHandler::OperationType::OPERATION_TYPE_READ));
+ pkgmgr_common::DBType::DB_TYPE_FILE_PKGDB,
+ pkgmgr_common::DBOperationType::OPERATION_TYPE_READ));
pkgmgr_client::PkgInfoClient client(parcelable, uid,
pkgmgr_common::ReqType::QUERY);
std::shared_ptr<pcp::AbstractParcelable> parcelable(
new pcp::QueryParcelable(uid,
{ QUERY_INDEX_APPINFO_GET_APPCONTROL_PRIVILEGES, { appid } },
- pcd::AbstractDBHandler::DBType::DB_TYPE_FILE_PKGDB,
- pcd::AbstractDBHandler::OperationType::OPERATION_TYPE_READ));
+ pkgmgr_common::DBType::DB_TYPE_FILE_PKGDB,
+ pkgmgr_common::DBOperationType::OPERATION_TYPE_READ));
pkgmgr_client::PkgInfoClient client(parcelable, uid,
pkgmgr_common::ReqType::QUERY);
new pcp::QueryParcelable(_getuid(),
{ QUERY_INDEX_PLUGININFO_GET_APPIDS,
{ pkgid, plugin_type, plugin_name } },
- pcd::AbstractDBHandler::DBType::DB_TYPE_FILE_PKGDB,
- pcd::AbstractDBHandler::OperationType::OPERATION_TYPE_READ));
+ pkgmgr_common::DBType::DB_TYPE_FILE_PKGDB,
+ pkgmgr_common::DBOperationType::OPERATION_TYPE_READ));
pkgmgr_client::PkgInfoClient client(parcelable, _getuid(),
pkgmgr_common::ReqType::QUERY);
std::shared_ptr<pcp::AbstractParcelable> parcelable(
new pcp::QueryParcelable(uid, std::move(info),
- pcd::AbstractDBHandler::DBType::DB_TYPE_FILE_PKGDB,
- pcd::AbstractDBHandler::OperationType::OPERATION_TYPE_READ));
+ pkgmgr_common::DBType::DB_TYPE_FILE_PKGDB,
+ pkgmgr_common::DBOperationType::OPERATION_TYPE_READ));
pkgmgr_client::PkgInfoClient client(parcelable, uid,
pkgmgr_common::ReqType::QUERY);
}
},
},
- pcd::AbstractDBHandler::DBType::DB_TYPE_FILE_PKGDB,
- pcd::AbstractDBHandler::OperationType::OPERATION_TYPE_WRITE));
+ pkgmgr_common::DBType::DB_TYPE_FILE_PKGDB,
+ pkgmgr_common::DBOperationType::OPERATION_TYPE_WRITE));
pkgmgr_client::PkgInfoClient client(parcelable, uid,
pkgmgr_common::ReqType::QUERY);
std::shared_ptr<pcp::AbstractParcelable> parcelable(
new pcp::QueryParcelable(0,
{ QUERY_INDEX_CERTINFO_COMPARE_PKG_CERTINFO, { l_pkgid, r_pkgid } },
- pcd::AbstractDBHandler::DBType::DB_TYPE_FILE_CERTDB,
- pcd::AbstractDBHandler::OperationType::OPERATION_TYPE_READ));
+ pkgmgr_common::DBType::DB_TYPE_FILE_CERTDB,
+ pkgmgr_common::DBOperationType::OPERATION_TYPE_READ));
pkgmgr_client::PkgInfoClient client(parcelable, 0,
pkgmgr_common::ReqType::QUERY);
if (!client.SendRequest())
std::shared_ptr<pcp::AbstractParcelable> parcelable(
new pcp::QueryParcelable(uid,
{ QUERY_INDEX_CERTINFO_COMPARE_APP_CERTINFO, { l_appid, r_appid } },
- pcd::AbstractDBHandler::DBType::DB_TYPE_FILE_PKGDB,
- pcd::AbstractDBHandler::OperationType::OPERATION_TYPE_READ));
+ pkgmgr_common::DBType::DB_TYPE_FILE_PKGDB,
+ pkgmgr_common::DBOperationType::OPERATION_TYPE_READ));
pkgmgr_client::PkgInfoClient client(parcelable, uid,
pkgmgr_common::ReqType::QUERY);
if (!client.SendRequest())
std::shared_ptr<pcp::AbstractParcelable> parcelable(
new pcp::QueryParcelable(uid, { query_index, std::move(args) },
- pcd::AbstractDBHandler::DBType::DB_TYPE_FILE_PKGDB,
- pcd::AbstractDBHandler::OperationType::OPERATION_TYPE_WRITE));
+ pkgmgr_common::DBType::DB_TYPE_FILE_PKGDB,
+ pkgmgr_common::DBOperationType::OPERATION_TYPE_WRITE));
pkgmgr_client::PkgInfoClient client(parcelable, uid,
pkgmgr_common::ReqType::QUERY);
std::shared_ptr<pcp::AbstractParcelable> parcelable(
new pcp::QueryParcelable(uid, std::move(queries),
- pcd::AbstractDBHandler::DBType::DB_TYPE_FILE_PKGDB,
- pcd::AbstractDBHandler::OperationType::OPERATION_TYPE_WRITE));
+ pkgmgr_common::DBType::DB_TYPE_FILE_PKGDB,
+ pkgmgr_common::DBOperationType::OPERATION_TYPE_WRITE));
pkgmgr_client::PkgInfoClient client(parcelable, uid,
pkgmgr_common::ReqType::QUERY);
manifest_x* mfx, uid_t uid) {
auto parcelable =
std::make_shared<pcp::PkgInfoParcelable>(uid,
- std::vector<package_x*>{mfx}, WriteType::Insert, false);
+ std::vector<package_x*>{mfx}, pkgmgr_common::PkgWriteType::Insert, false);
pkgmgr_client::PkgInfoClient client(parcelable, uid,
pkgmgr_common::ReqType::SET_PKG_INFO);
manifest_x* mfx, uid_t uid) {
auto parcelable =
std::make_shared<pcp::PkgInfoParcelable>(uid,
- std::vector<package_x*>{mfx}, WriteType::Update, false);
+ std::vector<package_x*>{mfx}, pkgmgr_common::PkgWriteType::Update, false);
pkgmgr_client::PkgInfoClient client(parcelable, uid,
pkgmgr_common::ReqType::SET_PKG_INFO);
manifest_x* mfx, uid_t uid) {
auto parcelable =
std::make_shared<pcp::PkgInfoParcelable>(uid,
- std::vector<package_x*>{mfx}, WriteType::Delete, false);
+ std::vector<package_x*>{mfx}, pkgmgr_common::PkgWriteType::Delete, false);
pkgmgr_client::PkgInfoClient client(parcelable, uid,
pkgmgr_common::ReqType::SET_PKG_INFO);
std::shared_ptr<pcp::AbstractParcelable> parcelable(
new pcp::QueryParcelable(0,
{ QUERY_INDEX_PKGINFO_DELETE_CERTINFO, { pkgid } },
- pcd::AbstractDBHandler::DBType::DB_TYPE_FILE_CERTDB,
- pcd::AbstractDBHandler::OperationType::OPERATION_TYPE_WRITE));
+ pkgmgr_common::DBType::DB_TYPE_FILE_CERTDB,
+ pkgmgr_common::DBOperationType::OPERATION_TYPE_WRITE));
pkgmgr_client::PkgInfoClient client(parcelable, 0,
pkgmgr_common::ReqType::QUERY);
return PMINFO_R_OK;
}
+
+static int __create_and_initialize_db(uid_t uid) {
+ std::shared_ptr<pcp::AbstractParcelable> parcelable(
+ new pcp::CreateDBParcelable(uid));
+
+ pkgmgr_client::PkgInfoClient client(parcelable, _getuid(),
+ pkgmgr_common::ReqType::CREATE_DB);
+
+ if (!client.SendRequest())
+ return -1;
+
+ auto ptr = client.GetResultParcel();
+ if (ptr == nullptr) {
+ LOG(ERROR) << "Fail to get return parcelable";
+ return -1;
+ }
+
+ if (ptr->GetRequestResult() != PMINFO_R_OK) {
+ LOG(ERROR) << "Request fail";
+ return -1;
+ }
+
+ if (ptr->GetType() != pcp::ParcelableType::Result) {
+ LOG(ERROR) << "Invalid parcelable type";
+ return -1;
+ }
+
+ return 0;
+}
+
+extern "C" EXPORT_API int _parser_create_and_initialize_db(uid_t uid) {
+ if (__create_and_initialize_db(uid) < 0) {
+ LOG(ERROR) << "Fail to initialize db";
+ return -1;
+ }
+
+ return 0;
+}