code.gitea.io/gitea@v1.19.3/modules/notification/mirror/mirror.go (about) 1 // Copyright 2022 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package mirror 5 6 import ( 7 "context" 8 9 repo_model "code.gitea.io/gitea/models/repo" 10 user_model "code.gitea.io/gitea/models/user" 11 "code.gitea.io/gitea/modules/log" 12 mirror_module "code.gitea.io/gitea/modules/mirror" 13 "code.gitea.io/gitea/modules/notification/base" 14 "code.gitea.io/gitea/modules/repository" 15 ) 16 17 type mirrorNotifier struct { 18 base.NullNotifier 19 } 20 21 var _ base.Notifier = &mirrorNotifier{} 22 23 // NewNotifier create a new mirrorNotifier notifier 24 func NewNotifier() base.Notifier { 25 return &mirrorNotifier{} 26 } 27 28 func (m *mirrorNotifier) NotifyPushCommits(ctx context.Context, _ *user_model.User, repo *repo_model.Repository, _ *repository.PushUpdateOptions, _ *repository.PushCommits) { 29 syncPushMirrorWithSyncOnCommit(ctx, repo.ID) 30 } 31 32 func (m *mirrorNotifier) NotifySyncPushCommits(ctx context.Context, _ *user_model.User, repo *repo_model.Repository, _ *repository.PushUpdateOptions, _ *repository.PushCommits) { 33 syncPushMirrorWithSyncOnCommit(ctx, repo.ID) 34 } 35 36 func syncPushMirrorWithSyncOnCommit(ctx context.Context, repoID int64) { 37 pushMirrors, err := repo_model.GetPushMirrorsSyncedOnCommit(ctx, repoID) 38 if err != nil { 39 log.Error("repo_model.GetPushMirrorsSyncedOnCommit failed: %v", err) 40 return 41 } 42 43 for _, mirror := range pushMirrors { 44 mirror_module.AddPushMirrorToQueue(mirror.ID) 45 } 46 }