From aa678b80985c5dcb92cef15e19bd963c47a647db Mon Sep 17 00:00:00 2001
From: Lunny Xiao <xiaolunwen@gmail.com>
Date: Tue, 5 Sep 2023 18:07:57 +0800
Subject: [PATCH] Move indexer notification to service layer (#26906)

Extract from #22266
---
 modules/notification/notification.go          |  2 --
 routers/init.go                               |  8 ++------
 services/indexer/indexer.go                   | 20 +++++++++++++++++++
 .../indexer.go => services/indexer/notify.go  |  0
 4 files changed, 22 insertions(+), 8 deletions(-)
 create mode 100644 services/indexer/indexer.go
 rename modules/notification/indexer/indexer.go => services/indexer/notify.go (100%)

diff --git a/modules/notification/notification.go b/modules/notification/notification.go
index 1e22c043a9..093113dcbe 100644
--- a/modules/notification/notification.go
+++ b/modules/notification/notification.go
@@ -14,7 +14,6 @@ import (
 	"code.gitea.io/gitea/modules/log"
 	"code.gitea.io/gitea/modules/notification/action"
 	"code.gitea.io/gitea/modules/notification/base"
-	"code.gitea.io/gitea/modules/notification/indexer"
 	"code.gitea.io/gitea/modules/notification/ui"
 	"code.gitea.io/gitea/modules/repository"
 )
@@ -30,7 +29,6 @@ func RegisterNotifier(notifier base.Notifier) {
 // NewContext registers notification handlers
 func NewContext() {
 	RegisterNotifier(ui.NewNotifier())
-	RegisterNotifier(indexer.NewNotifier())
 	RegisterNotifier(action.NewNotifier())
 }
 
diff --git a/routers/init.go b/routers/init.go
index 020fff31c0..ad7da70718 100644
--- a/routers/init.go
+++ b/routers/init.go
@@ -15,9 +15,6 @@ import (
 	"code.gitea.io/gitea/modules/eventsource"
 	"code.gitea.io/gitea/modules/git"
 	"code.gitea.io/gitea/modules/highlight"
-	code_indexer "code.gitea.io/gitea/modules/indexer/code"
-	issue_indexer "code.gitea.io/gitea/modules/indexer/issues"
-	stats_indexer "code.gitea.io/gitea/modules/indexer/stats"
 	"code.gitea.io/gitea/modules/log"
 	"code.gitea.io/gitea/modules/markup"
 	"code.gitea.io/gitea/modules/markup/external"
@@ -41,6 +38,7 @@ import (
 	"code.gitea.io/gitea/services/auth/source/oauth2"
 	"code.gitea.io/gitea/services/automerge"
 	"code.gitea.io/gitea/services/cron"
+	indexer_service "code.gitea.io/gitea/services/indexer"
 	"code.gitea.io/gitea/services/mailer"
 	mailer_incoming "code.gitea.io/gitea/services/mailer/incoming"
 	markup_service "code.gitea.io/gitea/services/markup"
@@ -143,9 +141,7 @@ func InitWebInstalled(ctx context.Context) {
 	mustInit(repo_service.Init)
 
 	// Booting long running goroutines.
-	issue_indexer.InitIssueIndexer(false)
-	code_indexer.Init()
-	mustInit(stats_indexer.Init)
+	mustInit(indexer_service.Init)
 
 	mirror_service.InitSyncMirrors()
 	mustInit(webhook.Init)
diff --git a/services/indexer/indexer.go b/services/indexer/indexer.go
new file mode 100644
index 0000000000..d5f31d99ea
--- /dev/null
+++ b/services/indexer/indexer.go
@@ -0,0 +1,20 @@
+// Copyright 2023 The Gitea Authors. All rights reserved.
+// SPDX-License-Identifier: MIT
+
+package indexer
+
+import (
+	code_indexer "code.gitea.io/gitea/modules/indexer/code"
+	issue_indexer "code.gitea.io/gitea/modules/indexer/issues"
+	stats_indexer "code.gitea.io/gitea/modules/indexer/stats"
+	"code.gitea.io/gitea/modules/notification"
+)
+
+// Init initialize the repo indexer
+func Init() error {
+	notification.RegisterNotifier(NewNotifier())
+
+	issue_indexer.InitIssueIndexer(false)
+	code_indexer.Init()
+	return stats_indexer.Init()
+}
diff --git a/modules/notification/indexer/indexer.go b/services/indexer/notify.go
similarity index 100%
rename from modules/notification/indexer/indexer.go
rename to services/indexer/notify.go