summaryrefslogtreecommitdiffstats
path: root/models
diff options
context:
space:
mode:
authorEarl Warren <109468362+earl-warren@users.noreply.github.com>2023-12-18 16:32:08 +0100
committerGitHub <noreply@github.com>2023-12-18 15:32:08 +0000
commite02095c5b6e04f70ae6562f5aee169f7ee93cf7a (patch)
tree237b7683a28259a3293720e7fb653e0cdf728be2 /models
parentbf8b082c40f2aee7d3fbd3c68d73886e13381712 (diff)
downloadgitea-e02095c5b6e04f70ae6562f5aee169f7ee93cf7a.tar.gz
gitea-e02095c5b6e04f70ae6562f5aee169f7ee93cf7a.zip
Add orphaned topic consistency check (#28507)
- If a topic has zero repository count, it means that none of the repositories are using that topic, that would make them 'useless' to keep. One caveat is that if that topic is going to be used in the future, it will be added again to the database, but simply with a new ID. Refs: https://codeberg.org/forgejo/forgejo/pulls/1964 Co-authored-by: Gusted <postmaster@gusted.xyz>
Diffstat (limited to 'models')
-rw-r--r--models/repo/topic.go10
1 files changed, 10 insertions, 0 deletions
diff --git a/models/repo/topic.go b/models/repo/topic.go
index ca533fc1e0..b71f43bc88 100644
--- a/models/repo/topic.go
+++ b/models/repo/topic.go
@@ -377,3 +377,13 @@ func syncTopicsInRepository(sess db.Engine, repoID int64) error {
}
return nil
}
+
+// CountOrphanedAttachments returns the number of topics that don't belong to any repository.
+func CountOrphanedTopics(ctx context.Context) (int64, error) {
+ return db.GetEngine(ctx).Where("repo_count = 0").Count(new(Topic))
+}
+
+// DeleteOrphanedAttachments delete all topics that don't belong to any repository.
+func DeleteOrphanedTopics(ctx context.Context) (int64, error) {
+ return db.GetEngine(ctx).Where("repo_count = 0").Delete(new(Topic))
+}