gitea

Зеркало из https://github.com/go-gitea/gitea
Форк
0
/
consistency.go 
31 строка · 994.0 Байт
1
// Copyright 2022 The Gitea Authors. All rights reserved.
2
// SPDX-License-Identifier: MIT
3

4
package db
5

6
import (
7
	"context"
8

9
	"xorm.io/builder"
10
)
11

12
// CountOrphanedObjects count subjects with have no existing refobject anymore
13
func CountOrphanedObjects(ctx context.Context, subject, refObject, joinCond string) (int64, error) {
14
	return GetEngine(ctx).
15
		Table("`"+subject+"`").
16
		Join("LEFT", "`"+refObject+"`", joinCond).
17
		Where(builder.IsNull{"`" + refObject + "`.id"}).
18
		Select("COUNT(`" + subject + "`.`id`)").
19
		Count()
20
}
21

22
// DeleteOrphanedObjects delete subjects with have no existing refobject anymore
23
func DeleteOrphanedObjects(ctx context.Context, subject, refObject, joinCond string) error {
24
	subQuery := builder.Select("`"+subject+"`.id").
25
		From("`"+subject+"`").
26
		Join("LEFT", "`"+refObject+"`", joinCond).
27
		Where(builder.IsNull{"`" + refObject + "`.id"})
28
	b := builder.Delete(builder.In("id", subQuery)).From("`" + subject + "`")
29
	_, err := GetEngine(ctx).Exec(b)
30
	return err
31
}
32

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.