summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--internal/db/bundb/conversation.go9
-rw-r--r--internal/db/bundb/filterkeyword.go19
-rw-r--r--internal/db/bundb/filterstatus.go17
-rw-r--r--internal/db/bundb/relationship_block.go6
-rw-r--r--internal/db/bundb/relationship_follow.go6
-rw-r--r--internal/db/bundb/relationship_follow_req.go6
-rw-r--r--internal/db/bundb/relationship_mute.go6
-rw-r--r--internal/db/bundb/timeline.go6
8 files changed, 62 insertions, 13 deletions
diff --git a/internal/db/bundb/conversation.go b/internal/db/bundb/conversation.go
index 5756dac59..d8245dc58 100644
--- a/internal/db/bundb/conversation.go
+++ b/internal/db/bundb/conversation.go
@@ -313,7 +313,14 @@ func (c *conversationDB) DeleteConversationsByOwnerAccountID(ctx context.Context
return gtserror.Newf("error deleting conversations for account %s: %w", accountID, err)
}
- // Delete any conversation-to-status links matching the deleted conversation IDs.
+ if len(deletedConversationIDs) == 0 {
+ // Nothing
+ // to delete.
+ return nil
+ }
+
+ // Delete any conversation-to-status links
+ // matching the deleted conversation IDs.
if _, err := tx.NewDelete().
Model((*gtsmodel.ConversationToStatus)(nil)).
Where("? IN (?)", bun.Ident("conversation_id"), bun.In(deletedConversationIDs)).
diff --git a/internal/db/bundb/filterkeyword.go b/internal/db/bundb/filterkeyword.go
index e010fbb0c..cb9958b81 100644
--- a/internal/db/bundb/filterkeyword.go
+++ b/internal/db/bundb/filterkeyword.go
@@ -112,20 +112,25 @@ func (f *filterDB) getFilterKeywords(ctx context.Context, idColumn string, id st
// Get each filter keyword by ID from the cache or DB.
filterKeywords, err := f.state.Caches.DB.FilterKeyword.LoadIDs("ID",
filterKeywordIDs,
- func(uncachedFilterKeywordIDs []string) ([]*gtsmodel.FilterKeyword, error) {
- uncachedFilterKeywords := make([]*gtsmodel.FilterKeyword, 0, len(uncachedFilterKeywordIDs))
+ func(uncached []string) ([]*gtsmodel.FilterKeyword, error) {
+ // Avoid querying
+ // if none uncached.
+ count := len(uncached)
+ if count == 0 {
+ return nil, nil
+ }
- // Scan from DB.
+ filterKeywords := make([]*gtsmodel.FilterKeyword, 0, count)
if err := f.db.
NewSelect().
- Model(&uncachedFilterKeywords).
- Where("? IN (?)", bun.Ident("id"), bun.In(uncachedFilterKeywordIDs)).
+ Model(&filterKeywords).
+ Where("? IN (?)", bun.Ident("id"), bun.In(uncached)).
Scan(ctx); err != nil {
return nil, err
}
// Compile all the keyword regular expressions.
- uncachedFilterKeywords = slices.DeleteFunc(uncachedFilterKeywords, func(filterKeyword *gtsmodel.FilterKeyword) bool {
+ filterKeywords = slices.DeleteFunc(filterKeywords, func(filterKeyword *gtsmodel.FilterKeyword) bool {
if err := filterKeyword.Compile(); err != nil {
log.Errorf(ctx, "error compiling filter keyword regex: %v", err)
return true
@@ -133,7 +138,7 @@ func (f *filterDB) getFilterKeywords(ctx context.Context, idColumn string, id st
return false
})
- return uncachedFilterKeywords, nil
+ return filterKeywords, nil
},
)
if err != nil {
diff --git a/internal/db/bundb/filterstatus.go b/internal/db/bundb/filterstatus.go
index 615724e81..8256cd401 100644
--- a/internal/db/bundb/filterstatus.go
+++ b/internal/db/bundb/filterstatus.go
@@ -99,16 +99,23 @@ func (f *filterDB) getFilterStatuses(ctx context.Context, idColumn string, id st
// Get each filter status by ID from the cache or DB.
filterStatuses, err := f.state.Caches.DB.FilterStatus.LoadIDs("ID",
filterStatusIDs,
- func(uncachedFilterStatusIDs []string) ([]*gtsmodel.FilterStatus, error) {
- uncachedFilterStatuses := make([]*gtsmodel.FilterStatus, 0, len(uncachedFilterStatusIDs))
+ func(uncached []string) ([]*gtsmodel.FilterStatus, error) {
+ // Avoid querying
+ // if none uncached.
+ count := len(uncached)
+ if count == 0 {
+ return nil, nil
+ }
+
+ filterStatuses := make([]*gtsmodel.FilterStatus, 0, count)
if err := f.db.
NewSelect().
- Model(&uncachedFilterStatuses).
- Where("? IN (?)", bun.Ident("id"), bun.In(uncachedFilterStatusIDs)).
+ Model(&filterStatuses).
+ Where("? IN (?)", bun.Ident("id"), bun.In(uncached)).
Scan(ctx); err != nil {
return nil, err
}
- return uncachedFilterStatuses, nil
+ return filterStatuses, nil
},
)
if err != nil {
diff --git a/internal/db/bundb/relationship_block.go b/internal/db/bundb/relationship_block.go
index 99d77c745..4093bad07 100644
--- a/internal/db/bundb/relationship_block.go
+++ b/internal/db/bundb/relationship_block.go
@@ -286,6 +286,12 @@ func (r *relationshipDB) DeleteAccountBlocks(ctx context.Context, accountID stri
return err
}
+ if len(blockIDs) == 0 {
+ // Nothing
+ // to delete.
+ return nil
+ }
+
defer func() {
// Invalidate all account's incoming / outoing blocks on return.
r.state.Caches.DB.Block.Invalidate("AccountID", accountID)
diff --git a/internal/db/bundb/relationship_follow.go b/internal/db/bundb/relationship_follow.go
index adf3a0161..413f3a2af 100644
--- a/internal/db/bundb/relationship_follow.go
+++ b/internal/db/bundb/relationship_follow.go
@@ -351,6 +351,12 @@ func (r *relationshipDB) DeleteAccountFollows(ctx context.Context, accountID str
return err
}
+ if len(followIDs) == 0 {
+ // Nothing
+ // to delete.
+ return nil
+ }
+
defer func() {
// Invalidate all account's incoming / outoing follows on return.
r.state.Caches.DB.Follow.Invalidate("AccountID", accountID)
diff --git a/internal/db/bundb/relationship_follow_req.go b/internal/db/bundb/relationship_follow_req.go
index a738f762b..2e058fbbb 100644
--- a/internal/db/bundb/relationship_follow_req.go
+++ b/internal/db/bundb/relationship_follow_req.go
@@ -387,6 +387,12 @@ func (r *relationshipDB) DeleteAccountFollowRequests(ctx context.Context, accoun
return err
}
+ if len(followReqIDs) == 0 {
+ // Nothing
+ // to delete.
+ return nil
+ }
+
defer func() {
// Invalidate all account's incoming / outoing follow requests on return.
r.state.Caches.DB.FollowRequest.Invalidate("AccountID", accountID)
diff --git a/internal/db/bundb/relationship_mute.go b/internal/db/bundb/relationship_mute.go
index 07ea4fa13..61b89d323 100644
--- a/internal/db/bundb/relationship_mute.go
+++ b/internal/db/bundb/relationship_mute.go
@@ -249,6 +249,12 @@ func (r *relationshipDB) DeleteAccountMutes(ctx context.Context, accountID strin
return err
}
+ if len(muteIDs) == 0 {
+ // Nothing
+ // to delete.
+ return nil
+ }
+
defer func() {
// Invalidate all account's incoming / outoing mutes on return.
r.state.Caches.DB.UserMute.Invalidate("AccountID", accountID)
diff --git a/internal/db/bundb/timeline.go b/internal/db/bundb/timeline.go
index 995c4e84f..1dc9dcf1b 100644
--- a/internal/db/bundb/timeline.go
+++ b/internal/db/bundb/timeline.go
@@ -351,6 +351,12 @@ func (t *timelineDB) GetListTimeline(
return nil, fmt.Errorf("error getting entries for list %s: %w", listID, err)
}
+ // If there's no list entries we can't
+ // possibly return anything for this list.
+ if len(listEntries) == 0 {
+ return make([]*gtsmodel.Status, 0), nil
+ }
+
// Extract just the IDs of each follow.
followIDs := make([]string, 0, len(listEntries))
for _, listEntry := range listEntries {