From 86f4d1871e5605c1592cb83b178f8ebe69ccdfa8 Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Thu, 18 Jan 2024 16:40:33 +0000 Subject: [PATCH] Revert "Fix schedule tasks bugs (#28691)" (part 2) This function is now being used elsewhere and cannot be reverted. Only the part that was modified in addition to being moved is deleted. (cherry picked from commit 72954836a492f552ccc03250ba560951eedc199d) --- .deadcode-out | 1 + services/repository/setting.go | 38 ++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 services/repository/setting.go diff --git a/.deadcode-out b/.deadcode-out index a64c5b936f..92937ab0ed 100644 --- a/.deadcode-out +++ b/.deadcode-out @@ -324,6 +324,7 @@ package "code.gitea.io/gitea/services/pull" package "code.gitea.io/gitea/services/repository" func GetBranchCommitID func IsErrForkAlreadyExist + func UpdateRepositoryUnits package "code.gitea.io/gitea/services/repository/archiver" func ArchiveRepository diff --git a/services/repository/setting.go b/services/repository/setting.go new file mode 100644 index 0000000000..7dded5d6be --- /dev/null +++ b/services/repository/setting.go @@ -0,0 +1,38 @@ +// Copyright 2023 The Gitea Authors. All rights reserved. +// SPDX-License-Identifier: MIT + +package repository + +import ( + "context" + + "code.gitea.io/gitea/models/db" + repo_model "code.gitea.io/gitea/models/repo" + "code.gitea.io/gitea/models/unit" +) + +// UpdateRepositoryUnits updates a repository's units +func UpdateRepositoryUnits(ctx context.Context, repo *repo_model.Repository, units []repo_model.RepoUnit, deleteUnitTypes []unit.Type) (err error) { + ctx, committer, err := db.TxContext(ctx) + if err != nil { + return err + } + defer committer.Close() + + // Delete existing settings of units before adding again + for _, u := range units { + deleteUnitTypes = append(deleteUnitTypes, u.Type) + } + + if _, err = db.GetEngine(ctx).Where("repo_id = ?", repo.ID).In("type", deleteUnitTypes).Delete(new(repo_model.RepoUnit)); err != nil { + return err + } + + if len(units) > 0 { + if err = db.Insert(ctx, units); err != nil { + return err + } + } + + return committer.Commit() +}