diff options
author | Earl Warren <109468362+earl-warren@users.noreply.github.com> | 2023-12-18 16:32:08 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-12-18 15:32:08 +0000 |
commit | e02095c5b6e04f70ae6562f5aee169f7ee93cf7a (patch) | |
tree | 237b7683a28259a3293720e7fb653e0cdf728be2 /models | |
parent | bf8b082c40f2aee7d3fbd3c68d73886e13381712 (diff) | |
download | gitea-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.go | 10 |
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)) +} |