From 80822c722e3d0d658df39708ffe9f50f752ca6cc Mon Sep 17 00:00:00 2001 From: David Dworken Date: Tue, 20 Sep 2022 21:36:02 -0700 Subject: [PATCH] Optimize SQL query so it only runs one query rather than N --- backend/server/server.go | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/backend/server/server.go b/backend/server/server.go index 3e2bf2a..412c2f5 100644 --- a/backend/server/server.go +++ b/backend/server/server.go @@ -277,17 +277,15 @@ func addDeletionRequestHandler(w http.ResponseWriter, r *http.Request) { } func applyDeletionRequestsToBackend(request shared.DeletionRequest) (int, error) { - numDeleted := 0 + tx := GLOBAL_DB.Where("false") for _, message := range request.Messages.Ids { - // TODO: Optimize this into one query - tx := GLOBAL_DB.Where("user_id = ? AND device_id = ? AND date = ?", request.UserId, message.DeviceId, message.Date) - result := tx.Delete(&shared.EncHistoryEntry{}) - if result.Error != nil { - return 0, result.Error - } - numDeleted += int(result.RowsAffected) + tx = tx.Or(GLOBAL_DB.Where("user_id = ? AND device_id = ? AND date = ?", request.UserId, message.DeviceId, message.Date)) } - return numDeleted, nil + result := tx.Delete(&shared.EncHistoryEntry{}) + if result.Error != nil { + return 0, result.Error + } + return int(result.RowsAffected), nil } func wipeDbHandler(w http.ResponseWriter, r *http.Request) {