cleanup device services table when a device is removed
authorAbhay Agarwal <ay.agarwal@samsung.com>
Wed, 2 Oct 2019 07:00:01 +0000 (16:00 +0900)
committersaerome.kim <saerome.kim@samsung.com>
Fri, 4 Oct 2019 11:20:53 +0000 (20:20 +0900)
This commit cleanup the corresponding device entries from device_services table.

Change-Id: Ie8d3166f520a7577f547c22966907b92f1a7b054
Signed-off-by: Abhay Agarwal <ay.agarwal@samsung.com>
ua-daemon/include/ua-manager-database.h
ua-daemon/src/ua-manager-device-db.c
ua-daemon/src/ua-manager-device-service-db.c

index ae3f337..51d7afe 100644 (file)
@@ -186,6 +186,8 @@ int _uam_db_delete_device_service_number(
 int _uam_db_delete_device_service(const char *service_name);
 int _uam_db_delete_device_service_info(const char *device_id, int tech_type,
                const char *address, const char *service_name);
+int _uam_db_delete_device_info(const char *device_id, int tech_type,
+               const char *address);
 
 /* insert */
 int _uam_db_insert_service(int device_number, int service_number,
index ddac6b1..7721d6d 100644 (file)
@@ -531,12 +531,13 @@ int _ua_device_db_delete_device_info(const char *device_id, int tech_type,
        DB_ACTION(sqlite3_bind_text(stmt, 3, address, -1, SQLITE_STATIC),
                error_code, handle_error);
 
+       error_code = _uam_db_delete_device_info(device_id, tech_type, address);
        if (sqlite3_step(stmt) != SQLITE_DONE) {
                UAM_ERR("Failed to delete device info %s",
                         sqlite3_errmsg(__uam_db_recover_database()));
                error_code = UAM_ERROR_DB_FAILED;
        } else
-               UAM_DBG("User info deleted");
+               UAM_DBG("Device info deleted");
 
 handle_error:
        sqlite3_reset(stmt);
index fd47e5f..211da2c 100644 (file)
@@ -39,6 +39,9 @@
 #define DELETE_DEVICE_SERVICE "delete from device_services " \
        "WHERE device_number = ? and service_number = ?"
 
+#define DELETE_DEVICE "delete from device_services " \
+       "WHERE device_number = ?"
+
 #define DELETE_SERVICE "delete from device_services " \
        "WHERE service_number = ?"
 
@@ -49,6 +52,7 @@
 static sqlite3_stmt *delete_all_device_services;
 static sqlite3_stmt *delete_service;
 static sqlite3_stmt *delete_device_service;
+static sqlite3_stmt *delete_device;
 
 /* SELECT statements */
 static sqlite3_stmt *select_service;
@@ -69,6 +73,7 @@ static void __ua_device_service_finalize_delete(void)
        FINALIZE(delete_all_device_services);
        FINALIZE(delete_service);
        FINALIZE(delete_device_service);
+       FINALIZE(delete_device);
 
        FUNC_EXIT;
 }
@@ -118,6 +123,8 @@ static int __ua_device_service_prepare_delete(sqlite3 *db)
                DELETE_SERVICE, __ua_device_service_finalize_delete);
        PREPARE_QUERY(rc, db, delete_device_service,
                DELETE_DEVICE_SERVICE, __ua_device_service_finalize_delete);
+       PREPARE_QUERY(rc, db, delete_device,
+               DELETE_DEVICE, __ua_device_service_finalize_delete);
 
        initialized = 1;
        FUNC_EXIT;
@@ -434,6 +441,29 @@ handle_error:
        return error_code;
 }
 
+int _uam_db_delete_device_number(int device_number)
+{
+       FUNC_ENTRY;
+       int error_code = UAM_ERROR_NONE;
+       sqlite3_stmt *stmt = delete_device;
+
+       UAM_INFO("Device Number: %d", device_number);
+
+       DB_ACTION(sqlite3_bind_int(stmt, 1, device_number), error_code, handle_error);
+
+       if (sqlite3_step(stmt) != SQLITE_DONE) {
+               UAM_ERR("Failed to delete device info %s",
+                               sqlite3_errmsg(__uam_db_recover_database()));
+               error_code = UAM_ERROR_DB_FAILED;
+       } else
+               UAM_DBG("Device info deleted");
+
+handle_error:
+       sqlite3_reset(stmt);
+       FUNC_EXIT;
+       return error_code;
+}
+
 int _uam_db_delete_device_service(const char *service_name)
 {
        FUNC_ENTRY;
@@ -495,6 +525,33 @@ handle_error:
        return error_code;
 }
 
+int _uam_db_delete_device_info(const char *device_id, int tech_type,
+               const char *address)
+{
+       FUNC_ENTRY;
+       int ret = UAM_ERROR_NONE;
+       int device_number = 0;
+       int error_code = UAM_ERROR_NONE;
+
+       UAM_INFO("%s-%d-%s", device_id, tech_type, address);
+
+       ret = _uam_db_get_device_number(device_id, tech_type, address, &device_number);
+       if (UAM_ERROR_NONE != ret)
+               goto handle_error;
+
+       UAM_INFO("%d", device_number);
+
+       ret = _uam_db_delete_device_number(device_number);
+       if (UAM_ERROR_NONE != ret)
+               goto handle_error;
+
+       UAM_DBG("Device info deleted [%d]", device_number);
+
+handle_error:
+       FUNC_EXIT;
+       return error_code;
+}
+
 GSList *_uam_db_get_service(int device_number)
 {
        FUNC_ENTRY;