summaryrefslogtreecommitdiffstats
path: root/models/consistency.go
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2022-06-13 17:37:59 +0800
committerGitHub <noreply@github.com>2022-06-13 17:37:59 +0800
commit1a9821f57a0293db3adc0eab8aff08ca5fa1026c (patch)
tree3c3d02813eb63c0d0827ef6d9745f6dcdd2636cb /models/consistency.go
parent3708ca8e2849ca7e36e6bd15ec6935a2a2d81e55 (diff)
downloadgitea-1a9821f57a0293db3adc0eab8aff08ca5fa1026c.tar.gz
gitea-1a9821f57a0293db3adc0eab8aff08ca5fa1026c.zip
Move issues related files into models/issues (#19931)
* Move access and repo permission to models/perm/access * fix test * fix git test * Move functions sequence * Some improvements per @KN4CK3R and @delvh * Move issues related code to models/issues * Move some issues related sub package * Merge * Fix test * Fix test * Fix test * Fix test * Rename some files
Diffstat (limited to 'models/consistency.go')
-rw-r--r--models/consistency.go214
1 files changed, 0 insertions, 214 deletions
diff --git a/models/consistency.go b/models/consistency.go
index e817b69176..18ed9195fc 100644
--- a/models/consistency.go
+++ b/models/consistency.go
@@ -5,7 +5,6 @@
package models
import (
- admin_model "code.gitea.io/gitea/models/admin"
"code.gitea.io/gitea/models/db"
repo_model "code.gitea.io/gitea/models/repo"
user_model "code.gitea.io/gitea/models/user"
@@ -14,151 +13,6 @@ import (
"xorm.io/builder"
)
-// CountOrphanedLabels return count of labels witch are broken and not accessible via ui anymore
-func CountOrphanedLabels() (int64, error) {
- noref, err := db.GetEngine(db.DefaultContext).Table("label").Where("repo_id=? AND org_id=?", 0, 0).Count("label.id")
- if err != nil {
- return 0, err
- }
-
- norepo, err := db.GetEngine(db.DefaultContext).Table("label").
- Where(builder.And(
- builder.Gt{"repo_id": 0},
- builder.NotIn("repo_id", builder.Select("id").From("repository")),
- )).
- Count()
- if err != nil {
- return 0, err
- }
-
- noorg, err := db.GetEngine(db.DefaultContext).Table("label").
- Where(builder.And(
- builder.Gt{"org_id": 0},
- builder.NotIn("org_id", builder.Select("id").From("user")),
- )).
- Count()
- if err != nil {
- return 0, err
- }
-
- return noref + norepo + noorg, nil
-}
-
-// DeleteOrphanedLabels delete labels witch are broken and not accessible via ui anymore
-func DeleteOrphanedLabels() error {
- // delete labels with no reference
- if _, err := db.GetEngine(db.DefaultContext).Table("label").Where("repo_id=? AND org_id=?", 0, 0).Delete(new(Label)); err != nil {
- return err
- }
-
- // delete labels with none existing repos
- if _, err := db.GetEngine(db.DefaultContext).
- Where(builder.And(
- builder.Gt{"repo_id": 0},
- builder.NotIn("repo_id", builder.Select("id").From("repository")),
- )).
- Delete(Label{}); err != nil {
- return err
- }
-
- // delete labels with none existing orgs
- if _, err := db.GetEngine(db.DefaultContext).
- Where(builder.And(
- builder.Gt{"org_id": 0},
- builder.NotIn("org_id", builder.Select("id").From("user")),
- )).
- Delete(Label{}); err != nil {
- return err
- }
-
- return nil
-}
-
-// CountOrphanedIssueLabels return count of IssueLabels witch have no label behind anymore
-func CountOrphanedIssueLabels() (int64, error) {
- return db.GetEngine(db.DefaultContext).Table("issue_label").
- NotIn("label_id", builder.Select("id").From("label")).
- Count()
-}
-
-// DeleteOrphanedIssueLabels delete IssueLabels witch have no label behind anymore
-func DeleteOrphanedIssueLabels() error {
- _, err := db.GetEngine(db.DefaultContext).
- NotIn("label_id", builder.Select("id").From("label")).
- Delete(IssueLabel{})
- return err
-}
-
-// CountOrphanedIssues count issues without a repo
-func CountOrphanedIssues() (int64, error) {
- return db.GetEngine(db.DefaultContext).Table("issue").
- Join("LEFT", "repository", "issue.repo_id=repository.id").
- Where(builder.IsNull{"repository.id"}).
- Select("COUNT(`issue`.`id`)").
- Count()
-}
-
-// DeleteOrphanedIssues delete issues without a repo
-func DeleteOrphanedIssues() error {
- ctx, committer, err := db.TxContext()
- if err != nil {
- return err
- }
- defer committer.Close()
-
- var ids []int64
-
- if err := db.GetEngine(ctx).Table("issue").Distinct("issue.repo_id").
- Join("LEFT", "repository", "issue.repo_id=repository.id").
- Where(builder.IsNull{"repository.id"}).GroupBy("issue.repo_id").
- Find(&ids); err != nil {
- return err
- }
-
- var attachmentPaths []string
- for i := range ids {
- paths, err := deleteIssuesByRepoID(ctx, ids[i])
- if err != nil {
- return err
- }
- attachmentPaths = append(attachmentPaths, paths...)
- }
-
- if err := committer.Commit(); err != nil {
- return err
- }
- committer.Close()
-
- // Remove issue attachment files.
- for i := range attachmentPaths {
- admin_model.RemoveAllWithNotice(db.DefaultContext, "Delete issue attachment", attachmentPaths[i])
- }
- return nil
-}
-
-// CountOrphanedObjects count subjects with have no existing refobject anymore
-func CountOrphanedObjects(subject, refobject, joinCond string) (int64, error) {
- return db.GetEngine(db.DefaultContext).Table("`"+subject+"`").
- Join("LEFT", "`"+refobject+"`", joinCond).
- Where(builder.IsNull{"`" + refobject + "`.id"}).
- Select("COUNT(`" + subject + "`.`id`)").
- Count()
-}
-
-// DeleteOrphanedObjects delete subjects with have no existing refobject anymore
-func DeleteOrphanedObjects(subject, refobject, joinCond string) error {
- subQuery := builder.Select("`"+subject+"`.id").
- From("`"+subject+"`").
- Join("LEFT", "`"+refobject+"`", joinCond).
- Where(builder.IsNull{"`" + refobject + "`.id"})
- sql, args, err := builder.Delete(builder.In("id", subQuery)).From("`" + subject + "`").ToSQL()
- if err != nil {
- return err
- }
- _, err = db.GetEngine(db.DefaultContext).Exec(append([]interface{}{sql}, args...)...)
- return err
-}
-
// CountNullArchivedRepository counts the number of repositories with is_archived is null
func CountNullArchivedRepository() (int64, error) {
return db.GetEngine(db.DefaultContext).Where(builder.IsNull{"is_archived"}).Count(new(repo_model.Repository))
@@ -181,74 +35,6 @@ func FixWrongUserType() (int64, error) {
return db.GetEngine(db.DefaultContext).Where(builder.Eq{"type": 0}.And(builder.Neq{"num_teams": 0})).Cols("type").NoAutoTime().Update(&user_model.User{Type: 1})
}
-// CountCommentTypeLabelWithEmptyLabel count label comments with empty label
-func CountCommentTypeLabelWithEmptyLabel() (int64, error) {
- return db.GetEngine(db.DefaultContext).Where(builder.Eq{"type": CommentTypeLabel, "label_id": 0}).Count(new(Comment))
-}
-
-// FixCommentTypeLabelWithEmptyLabel count label comments with empty label
-func FixCommentTypeLabelWithEmptyLabel() (int64, error) {
- return db.GetEngine(db.DefaultContext).Where(builder.Eq{"type": CommentTypeLabel, "label_id": 0}).Delete(new(Comment))
-}
-
-// CountCommentTypeLabelWithOutsideLabels count label comments with outside label
-func CountCommentTypeLabelWithOutsideLabels() (int64, error) {
- return db.GetEngine(db.DefaultContext).Where("comment.type = ? AND ((label.org_id = 0 AND issue.repo_id != label.repo_id) OR (label.repo_id = 0 AND label.org_id != repository.owner_id))", CommentTypeLabel).
- Table("comment").
- Join("inner", "label", "label.id = comment.label_id").
- Join("inner", "issue", "issue.id = comment.issue_id ").
- Join("inner", "repository", "issue.repo_id = repository.id").
- Count(new(Comment))
-}
-
-// FixCommentTypeLabelWithOutsideLabels count label comments with outside label
-func FixCommentTypeLabelWithOutsideLabels() (int64, error) {
- res, err := db.GetEngine(db.DefaultContext).Exec(`DELETE FROM comment WHERE comment.id IN (
- SELECT il_too.id FROM (
- SELECT com.id
- FROM comment AS com
- INNER JOIN label ON com.label_id = label.id
- INNER JOIN issue on issue.id = com.issue_id
- INNER JOIN repository ON issue.repo_id = repository.id
- WHERE
- com.type = ? AND ((label.org_id = 0 AND issue.repo_id != label.repo_id) OR (label.repo_id = 0 AND label.org_id != repository.owner_id))
- ) AS il_too)`, CommentTypeLabel)
- if err != nil {
- return 0, err
- }
-
- return res.RowsAffected()
-}
-
-// CountIssueLabelWithOutsideLabels count label comments with outside label
-func CountIssueLabelWithOutsideLabels() (int64, error) {
- return db.GetEngine(db.DefaultContext).Where(builder.Expr("(label.org_id = 0 AND issue.repo_id != label.repo_id) OR (label.repo_id = 0 AND label.org_id != repository.owner_id)")).
- Table("issue_label").
- Join("inner", "label", "issue_label.label_id = label.id ").
- Join("inner", "issue", "issue.id = issue_label.issue_id ").
- Join("inner", "repository", "issue.repo_id = repository.id").
- Count(new(IssueLabel))
-}
-
-// FixIssueLabelWithOutsideLabels fix label comments with outside label
-func FixIssueLabelWithOutsideLabels() (int64, error) {
- res, err := db.GetEngine(db.DefaultContext).Exec(`DELETE FROM issue_label WHERE issue_label.id IN (
- SELECT il_too.id FROM (
- SELECT il_too_too.id
- FROM issue_label AS il_too_too
- INNER JOIN label ON il_too_too.label_id = label.id
- INNER JOIN issue on issue.id = il_too_too.issue_id
- INNER JOIN repository on repository.id = issue.repo_id
- WHERE
- (label.org_id = 0 AND issue.repo_id != label.repo_id) OR (label.repo_id = 0 AND label.org_id != repository.owner_id)
- ) AS il_too )`)
- if err != nil {
- return 0, err
- }
-
- return res.RowsAffected()
-}
-
// CountActionCreatedUnixString count actions where created_unix is an empty string
func CountActionCreatedUnixString() (int64, error) {
if setting.Database.UseSQLite3 {