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  }