@@ -24,6 +24,8 @@ import (
2424 "code.gitea.io/gitea/modules/base"
2525 "code.gitea.io/gitea/modules/context"
2626 "code.gitea.io/gitea/modules/git"
27+ "code.gitea.io/gitea/modules/indexer/code"
28+ "code.gitea.io/gitea/modules/indexer/stats"
2729 "code.gitea.io/gitea/modules/lfs"
2830 "code.gitea.io/gitea/modules/log"
2931 "code.gitea.io/gitea/modules/repository"
@@ -67,6 +69,23 @@ func Settings(ctx *context.Context) {
6769 signing , _ := asymkey_service .SigningKey (ctx .Repo .Repository .RepoPath ())
6870 ctx .Data ["SigningKeyAvailable" ] = len (signing ) > 0
6971 ctx .Data ["SigningSettings" ] = setting .Repository .Signing
72+ ctx .Data ["CodeIndexerEnabled" ] = setting .Indexer .RepoIndexerEnabled
73+ if ctx .User .IsAdmin {
74+ if setting .Indexer .RepoIndexerEnabled {
75+ status , err := repo_model .GetIndexerStatus (ctx .Repo .Repository , repo_model .RepoIndexerTypeCode )
76+ if err != nil {
77+ ctx .ServerError ("repo.indexer_status" , err )
78+ return
79+ }
80+ ctx .Data ["CodeIndexerStatus" ] = status
81+ }
82+ status , err := repo_model .GetIndexerStatus (ctx .Repo .Repository , repo_model .RepoIndexerTypeStats )
83+ if err != nil {
84+ ctx .ServerError ("repo.indexer_status" , err )
85+ return
86+ }
87+ ctx .Data ["StatsIndexerStatus" ] = status
88+ }
7089 pushMirrors , err := repo_model .GetPushMirrorsByRepoID (ctx .Repo .Repository .ID )
7190 if err != nil {
7291 ctx .ServerError ("GetPushMirrorsByRepoID" , err )
@@ -515,6 +534,34 @@ func SettingsPost(ctx *context.Context) {
515534 ctx .Flash .Success (ctx .Tr ("repo.settings.update_settings_success" ))
516535 ctx .Redirect (ctx .Repo .RepoLink + "/settings" )
517536
537+ case "admin_index" :
538+ if ! ctx .User .IsAdmin {
539+ ctx .Error (http .StatusForbidden )
540+ return
541+ }
542+
543+ switch form .RequestReindexType {
544+ case "stats" :
545+ if err := stats .UpdateRepoIndexer (ctx .Repo .Repository ); err != nil {
546+ ctx .ServerError ("UpdateStatsRepondexer" , err )
547+ return
548+ }
549+ case "code" :
550+ if ! setting .Indexer .RepoIndexerEnabled {
551+ ctx .Error (http .StatusForbidden )
552+ return
553+ }
554+ code .UpdateRepoIndexer (ctx .Repo .Repository )
555+ default :
556+ ctx .NotFound ("" , nil )
557+ return
558+ }
559+
560+ log .Trace ("Repository reindex for %s requested: %s/%s" , form .RequestReindexType , ctx .Repo .Owner .Name , repo .Name )
561+
562+ ctx .Flash .Success (ctx .Tr ("repo.settings.reindex_requested" ))
563+ ctx .Redirect (ctx .Repo .RepoLink + "/settings" )
564+
518565 case "convert" :
519566 if ! ctx .Repo .IsOwner () {
520567 ctx .Error (http .StatusNotFound )
0 commit comments