deleteBookmarkQuery.exec();
}
+void BookmarksDatabase::deleteBookmarks(const QString url)
+{
+ // Get a handle for the bookmarks database.
+ QSqlDatabase bookmarksDatabase = QSqlDatabase::database(CONNECTION_NAME);
+
+ // Instantiate a parent folder IDs query.
+ QSqlQuery parentFolderIdsQuery(bookmarksDatabase);
+
+ // Prepare the parent folder IDs query.
+ parentFolderIdsQuery.prepare("SELECT " + PARENT_FOLDER_ID + " FROM " + BOOKMARKS_TABLE + " WHERE " + IS_FOLDER + " = 0 AND " + BOOKMARK_URL + " = :url");
+
+ // Bind the query values.
+ parentFolderIdsQuery.bindValue(":url", url);
+
+ // Execute the query.
+ parentFolderIdsQuery.exec();
+
+ // Instantiate a delete bookmarks query.
+ QSqlQuery deleteBookmarksQuery(bookmarksDatabase);
+
+ // Prepare the delete bookmark query.
+ deleteBookmarksQuery.prepare("DELETE FROM " + BOOKMARKS_TABLE + " WHERE " + IS_FOLDER + " = 0 AND " + BOOKMARK_URL + " = :url");
+
+ // Bind the query values.
+ deleteBookmarksQuery.bindValue(":url", url);
+
+ // Execute the query.
+ deleteBookmarksQuery.exec();
+
+ // Create a parent folder IDs list. A standard list can be sorted and deduplicated.
+ std::list<double> parentFolderIdsList;
+
+ // Populate the parent folder IDs list.
+ while (parentFolderIdsQuery.next())
+ {
+ // Add the parent folder ID to the list.
+ parentFolderIdsList.push_back(parentFolderIdsQuery.value(PARENT_FOLDER_ID).toDouble());
+ }
+
+ // Sort the parent folder IDs list.
+ parentFolderIdsList.sort();
+
+ // Remove duplicate entries from the parent folder IDs list.
+ parentFolderIdsList.unique();
+
+ // Update the display order of each folder where a bookmark was deleted.
+ for (const double parentFolderId : parentFolderIdsList)
+ updateFolderContentsDisplayOrder(parentFolderId);
+}
+
double BookmarksDatabase::generateFolderId()
{
// Get the current time in epoch format (milliseconds).
return subfoldersListPointer;
}
+bool BookmarksDatabase::isBookmarked(const QString url)
+{
+ // Get a handle for the bookmarks database.
+ QSqlDatabase bookmarksDatabase = QSqlDatabase::database(CONNECTION_NAME);
+
+ // Instantiate an is bookmarked query.
+ QSqlQuery isBookmarkedQuery(bookmarksDatabase);
+
+ // Set the query to be forward only, which is more performant.
+ isBookmarkedQuery.setForwardOnly(true);
+
+ // Prepare the is bookmarked query.
+ isBookmarkedQuery.prepare("SELECT " + ID + " FROM " + BOOKMARKS_TABLE + " WHERE " + IS_FOLDER + " = 0 AND " + BOOKMARK_URL + " = :url");
+
+ // Bind the query values.
+ isBookmarkedQuery.bindValue(":url", url);
+
+ // Execute the query.
+ isBookmarkedQuery.exec();
+
+ // Move to the first entry.
+ isBookmarkedQuery.first();
+
+ // Return true if the query is valid (there is at least one item).
+ return isBookmarkedQuery.isValid();
+}
+
bool BookmarksDatabase::isFolder(const int databaseId)
{
// Get a handle for the bookmarks database.