avoid adding duplicate feed/saved search
This commit is contained in:
parent
c43015439d
commit
2a77232d80
3 changed files with 49 additions and 15 deletions
|
|
@ -49,13 +49,27 @@ class FeedSavedSearchRepositoryImpl(
|
|||
}
|
||||
|
||||
override suspend fun insert(feedSavedSearch: FeedSavedSearch): Long {
|
||||
return handler.awaitOneExecutable(true) {
|
||||
feed_saved_searchQueries.insert(
|
||||
feedSavedSearch.source,
|
||||
feedSavedSearch.savedSearch,
|
||||
feedSavedSearch.global,
|
||||
)
|
||||
feed_saved_searchQueries.selectLastInsertedRowId()
|
||||
// KMK -->
|
||||
return handler.await(true) {
|
||||
val currentFeeds = handler.awaitList {
|
||||
feed_saved_searchQueries.selectAll(FeedSavedSearchMapper::map)
|
||||
}
|
||||
val existedFeedId = currentFeeds.find { currentFeed ->
|
||||
currentFeed.source == feedSavedSearch.source &&
|
||||
currentFeed.savedSearch == feedSavedSearch.savedSearch &&
|
||||
currentFeed.global == feedSavedSearch.global
|
||||
}?.id
|
||||
|
||||
existedFeedId
|
||||
// KMK <--
|
||||
?: handler.awaitOneExecutable(true) {
|
||||
feed_saved_searchQueries.insert(
|
||||
feedSavedSearch.source,
|
||||
feedSavedSearch.savedSearch,
|
||||
feedSavedSearch.global,
|
||||
)
|
||||
feed_saved_searchQueries.selectLastInsertedRowId()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -26,14 +26,29 @@ class SavedSearchRepositoryImpl(
|
|||
}
|
||||
|
||||
override suspend fun insert(savedSearch: SavedSearch): Long {
|
||||
return handler.awaitOneExecutable(true) {
|
||||
saved_searchQueries.insert(
|
||||
savedSearch.source,
|
||||
savedSearch.name,
|
||||
savedSearch.query,
|
||||
savedSearch.filtersJson,
|
||||
)
|
||||
saved_searchQueries.selectLastInsertedRowId()
|
||||
// KMK -->
|
||||
return handler.await(true) {
|
||||
val currentSavedSearches = handler.awaitList {
|
||||
saved_searchQueries.selectAll(SavedSearchMapper::map)
|
||||
}
|
||||
val existedSavedSearchId = currentSavedSearches.find { currentSavedSearch ->
|
||||
currentSavedSearch.source == savedSearch.source &&
|
||||
currentSavedSearch.name == savedSearch.name &&
|
||||
currentSavedSearch.query == savedSearch.query &&
|
||||
currentSavedSearch.filtersJson == savedSearch.filtersJson
|
||||
}?.id
|
||||
|
||||
existedSavedSearchId
|
||||
// KMK <--
|
||||
?: handler.awaitOneExecutable(true) {
|
||||
saved_searchQueries.insert(
|
||||
savedSearch.source,
|
||||
savedSearch.name,
|
||||
savedSearch.query,
|
||||
savedSearch.filtersJson,
|
||||
)
|
||||
saved_searchQueries.selectLastInsertedRowId()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -12,6 +12,11 @@ CREATE TABLE feed_saved_search (
|
|||
|
||||
CREATE INDEX feed_saved_search_saved_search_index ON feed_saved_search(saved_search);
|
||||
|
||||
-- KMK -->
|
||||
selectAll:
|
||||
SELECT * FROM feed_saved_search ORDER BY feed_order;
|
||||
-- KMK <--
|
||||
|
||||
selectAllGlobal:
|
||||
SELECT * FROM feed_saved_search WHERE global = 1 ORDER BY feed_order;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue