Add Foreach depdency API for Archiveinfo
[platform/core/appfw/pkgmgr-info.git] / src / pkgmgrinfo_private.h
index 9892dee..47746bd 100644 (file)
@@ -74,8 +74,6 @@
 #define INTERFACE_NAME "org.tizen.system.deviced.Mmc"
 #define METHOD_NAME "RequestMountApp2ext"
 
-#define GET_DB(X)  (X).dbHandle
-
 /*String properties for filtering based on package info*/
 typedef enum _pkgmgrinfo_pkginfo_filter_prop_str {
        E_PMINFO_PKGINFO_PROP_PACKAGE_MIN_STR = 101,
@@ -102,7 +100,9 @@ typedef enum _pkgmgrinfo_pkginfo_filter_prop_bool {
        E_PMINFO_PKGINFO_PROP_PACKAGE_NODISPLAY_SETTING,
        E_PMINFO_PKGINFO_PROP_PACKAGE_SUPPORT_DISABLE,
        E_PMINFO_PKGINFO_PROP_PACKAGE_DISABLE,
-       E_PMINFO_PKGINFO_PROP_PACKAGE_MAX_BOOL = E_PMINFO_PKGINFO_PROP_PACKAGE_DISABLE
+       E_PMINFO_PKGINFO_PROP_PACKAGE_CHECK_STORAGE,
+       E_PMINFO_PKGINFO_PROP_PACKAGE_SYSTEM,
+       E_PMINFO_PKGINFO_PROP_PACKAGE_MAX_BOOL = E_PMINFO_PKGINFO_PROP_PACKAGE_SYSTEM
 } pkgmgrinfo_pkginfo_filter_prop_bool;
 
 /*Integer properties for filtering based on package info*/
@@ -128,9 +128,8 @@ typedef enum _pkgmgrinfo_appinfo_filter_prop_str {
        E_PMINFO_APPINFO_PROP_APP_SCREENREADER,
        E_PMINFO_APPINFO_PROP_APP_PACKAGE,
        E_PMINFO_APPINFO_PROP_APP_INSTALLED_STORAGE,
-       E_PMINFO_APPINFO_PROP_APP_METADATA_KEY,
-       E_PMINFO_APPINFO_PROP_APP_METADATA_VALUE,
-       E_PMINFO_APPINFO_PROP_APP_MAX_STR = E_PMINFO_APPINFO_PROP_APP_METADATA_VALUE
+       E_PMINFO_APPINFO_PROP_PRIVILEGE,
+       E_PMINFO_APPINFO_PROP_APP_MAX_STR = E_PMINFO_APPINFO_PROP_PRIVILEGE
 } pkgmgrinfo_appinfo_filter_prop_str;
 
 /*Boolean properties for filtering based on app info*/
@@ -145,15 +144,16 @@ typedef enum _pkgmgrinfo_appinfo_filter_prop_bool {
        E_PMINFO_APPINFO_PROP_APP_UI_GADGET,
        E_PMINFO_APPINFO_PROP_APP_DISABLE,
        E_PMINFO_APPINFO_PROP_APP_SUPPORT_DISABLE,
-       E_PMINFO_APPINFO_PROP_APP_MAX_BOOL = E_PMINFO_APPINFO_PROP_APP_SUPPORT_DISABLE
+       E_PMINFO_APPINFO_PROP_APP_CHECK_STORAGE,
+       E_PMINFO_APPINFO_PROP_PKG_DISABLE,
+       E_PMINFO_APPINFO_PROP_APP_MAX_BOOL = E_PMINFO_APPINFO_PROP_PKG_DISABLE
 } pkgmgrinfo_appinfo_filter_prop_bool;
 
 /*Integer properties for filtering based on app info*/
 typedef enum _pkgmgrinfo_appinfo_filter_prop_int {
        /*Currently No Fields*/
        E_PMINFO_APPINFO_PROP_APP_MIN_INT = 601,
-       E_PMINFO_APPINFO_PROP_APP_DISABLE_FOR_USER = E_PMINFO_APPINFO_PROP_APP_MIN_INT,
-       E_PMINFO_APPINFO_PROP_APP_SUPPORT_MODE,
+       E_PMINFO_APPINFO_PROP_APP_SUPPORT_MODE = E_PMINFO_APPINFO_PROP_APP_MIN_INT,
        E_PMINFO_APPINFO_PROP_APP_MAX_INT = E_PMINFO_APPINFO_PROP_APP_SUPPORT_MODE
 } pkgmgrinfo_appinfo_filter_prop_int;
 
@@ -175,8 +175,14 @@ typedef enum _pkgmgrinfo_appinfo_join_flag {
        E_PMINFO_APPINFO_JOIN_CATEGORY = 0x0002,
        E_PMINFO_APPINFO_JOIN_APP_CONTROL = 0x0004,
        E_PMINFO_APPINFO_JOIN_METADATA = 0x0008,
+       E_PMINFO_APPINFO_JOIN_PRIVILEGE = 0x0010,
 } pkgmgrinfo_appinfo_join_flag;
 
+typedef enum _pkgmgrinfo_appinfo_disable_type {
+       E_APPINFO_DISABLE_TYPE_PKG = 0,
+       E_APPINFO_DISABLE_TYPE_APP
+} pkgmgrinfo_appinfo_disable_type;
+
 typedef struct _pkgmgr_pkginfo_x {
        uid_t uid;
        package_x *pkg_info;
@@ -194,6 +200,7 @@ typedef struct _pkgmgr_appinfo_x {
 typedef struct _pkgmgrinfo_filter_x {
        uid_t uid;
        GSList *list;
+       GSList *list_metadata;
 } pkgmgrinfo_filter_x;
 
 typedef struct _pkgmgrinfo_node_x {
@@ -202,6 +209,11 @@ typedef struct _pkgmgrinfo_node_x {
        char *value;
 } pkgmgrinfo_node_x;
 
+typedef struct _pkgmgrinfo_metadata_node_x {
+       char *key;
+       char *value;
+} pkgmgrinfo_metadata_node_x;
+
 typedef struct _pkgmgrinfo_appcontrol_x {
        int operation_count;
        int uri_count;
@@ -218,8 +230,73 @@ typedef struct _db_handle {
        int ref;
 } db_handle;
 
-extern __thread db_handle manifest_db;
-extern __thread db_handle cert_db;
+/* TODO: refine below structures */
+#define PKG_TYPE_STRING_LEN_MAX        128
+#define PKG_NAME_STRING_LEN_MAX        128
+#define PKG_VERSION_STRING_LEN_MAX     128
+#define PKG_VALUE_STRING_LEN_MAX 512
+#define PKG_URL_STRING_LEN_MAX 1024
+#define PKG_LABEL_STRING_LEN_MAX 128
+#define PKG_PATH_STRING_LEN_MAX 512
+#define PKG_DEP_TYPE_STRING_LEN_MAX 128
+
+typedef struct _package_manager_pkg_info_t {
+       char pkg_type[PKG_TYPE_STRING_LEN_MAX];
+       char pkg_name[PKG_NAME_STRING_LEN_MAX];
+       char pkgid[PKG_NAME_STRING_LEN_MAX];
+       char version[PKG_VERSION_STRING_LEN_MAX];
+       struct _package_manager_pkg_info_t *next;
+} package_manager_pkg_info_t;
+
+typedef struct _package_manager_pkg_dependency_info_t {
+       char pkgid[PKG_NAME_STRING_LEN_MAX];
+       char type[PKG_DEP_TYPE_STRING_LEN_MAX];
+       char required_version[PKG_VERSION_STRING_LEN_MAX];
+} pkg_dependency_info_t;
+
+typedef struct _package_manager_pkg_detail_info_t {
+       char pkg_type[PKG_TYPE_STRING_LEN_MAX];
+       char pkg_name[PKG_NAME_STRING_LEN_MAX];
+       char pkgid[PKG_NAME_STRING_LEN_MAX];
+       char version[PKG_VERSION_STRING_LEN_MAX];
+       char api_version[PKG_VERSION_STRING_LEN_MAX];
+       char pkg_description[PKG_VALUE_STRING_LEN_MAX];
+       char min_platform_version[PKG_VERSION_STRING_LEN_MAX];
+       time_t installed_time;  /* installed time it must be GMT+0 time */
+       int installed_size;             /* installed total size */
+       int app_size;                   /* installed app size */
+       int data_size;                  /* data size which is made on run time */
+       char optional_id[PKG_NAME_STRING_LEN_MAX]; /*package ID if exists */
+       void *pkg_optional_info;
+       char label[PKG_LABEL_STRING_LEN_MAX];
+       char author[PKG_VALUE_STRING_LEN_MAX];
+       char *icon_buf;
+       int icon_size;
+       GList *privilege_list;
+       GList *dependency_list;
+} package_manager_pkg_detail_info_t;
+
+typedef void (*_pkg_plugin_unload)(void);
+typedef int (*_pkg_plugin_pkg_is_installed) (const char *pkgid);
+typedef int (*_pkg_plugin_get_installed_pkg_list)(
+               const char *category, const char *option,
+               package_manager_pkg_info_t **list, int *count);
+typedef int (*_pkg_plugin_get_pkg_detail_info)(const char *pkgid,
+               package_manager_pkg_detail_info_t *pkg_detail_info);
+typedef int (*_pkg_plugin_get_pkg_detail_info_from_package)(
+               const char *pkg_path,
+               package_manager_pkg_detail_info_t *pkg_detail_info);
+
+typedef struct _pkg_plugin_set {
+       char pkg_type[PKG_TYPE_STRING_LEN_MAX];
+       void *plugin_handle;
+       _pkg_plugin_unload plugin_on_unload;
+       _pkg_plugin_pkg_is_installed pkg_is_installed;
+       _pkg_plugin_get_installed_pkg_list get_installed_pkg_list;
+       _pkg_plugin_get_pkg_detail_info get_pkg_detail_info;
+       _pkg_plugin_get_pkg_detail_info_from_package
+       get_pkg_detail_info_from_package;
+} pkg_plugin_set;
 
 pkgmgrinfo_pkginfo_filter_prop_str _pminfo_pkginfo_convert_to_prop_str(const char *property);
 pkgmgrinfo_pkginfo_filter_prop_int _pminfo_pkginfo_convert_to_prop_int(const char *property);
@@ -231,19 +308,20 @@ pkgmgrinfo_appinfo_filter_prop_bool _pminfo_appinfo_convert_to_prop_bool(const c
 
 pkgmgrinfo_pkginfo_filter_prop_range _pminfo_pkginfo_convert_to_prop_range(const char *property);
 
-int _check_create_cert_db(sqlite3 *certdb);
-int __close_manifest_db(void);
-int __open_manifest_db(uid_t uid, bool readonly);
-int __close_cert_db(void);
-int __open_cert_db(uid_t uid, bool readonly);
+int _check_create_cert_db(void);
 void _save_column_int(sqlite3_stmt *stmt, int idx, int *i);
 void _save_column_str(sqlite3_stmt *stmt, int idx, char **str);
 char *_get_system_locale(void);
-int __get_filter_condition(gpointer data, char **condition, GList **param);
+int __get_filter_condition(gpointer data, uid_t uid, char **condition, GList **param);
+int __get_metadata_filter_condition(gpointer data, char **condition, GList **param);
 int _add_icon_info_into_list(const char *locale, char *value, GList **icon);
 int _add_label_info_into_list(const char *locale, char *value, GList **label);
 int __pkginfo_check_installed_storage(package_x *pkginfo);
 int __appinfo_check_installed_storage(application_x *appinfo);
+int __open_db(const char *path, sqlite3 **db, int flags);
+char *__get_type_from_path(const char *pkg_path);
+pkg_plugin_set *__load_library(const char *pkg_type);
+void __unload_library(const char *pkg_type);
 
 #define GLOBAL_USER tzplatform_getuid(TZ_SYS_GLOBALAPP_USER)
 #define REGULAR_USER 5000