Move code indexer related code to a new package (#9191)
* move code indexer related code to a new package * fix lint * fix tests * fix fmt * GetMaxID support interface parameter
This commit is contained in:
@ -10,6 +10,7 @@ import (
|
||||
"time"
|
||||
|
||||
"code.gitea.io/gitea/models"
|
||||
code_indexer "code.gitea.io/gitea/modules/indexer/code"
|
||||
"code.gitea.io/gitea/modules/setting"
|
||||
|
||||
"github.com/PuerkitoBio/goquery"
|
||||
@ -34,7 +35,7 @@ func TestSearchRepo(t *testing.T) {
|
||||
repo, err := models.GetRepositoryByOwnerAndName("user2", "repo1")
|
||||
assert.NoError(t, err)
|
||||
|
||||
executeIndexer(t, repo, models.UpdateRepoIndexer)
|
||||
executeIndexer(t, repo, code_indexer.UpdateRepoIndexer)
|
||||
|
||||
testSearch(t, "/user2/repo1/search?q=Description&page=1", []string{"README.md"})
|
||||
|
||||
@ -44,8 +45,8 @@ func TestSearchRepo(t *testing.T) {
|
||||
repo, err = models.GetRepositoryByOwnerAndName("user2", "glob")
|
||||
assert.NoError(t, err)
|
||||
|
||||
executeIndexer(t, repo, models.DeleteRepoFromIndexer)
|
||||
executeIndexer(t, repo, models.UpdateRepoIndexer)
|
||||
executeIndexer(t, repo, code_indexer.DeleteRepoFromIndexer)
|
||||
executeIndexer(t, repo, code_indexer.UpdateRepoIndexer)
|
||||
|
||||
testSearch(t, "/user2/glob/search?q=loren&page=1", []string{"a.txt"})
|
||||
testSearch(t, "/user2/glob/search?q=file3&page=1", []string{"x/b.txt"})
|
||||
|
@ -254,3 +254,28 @@ func MaxBatchInsertSize(bean interface{}) int {
|
||||
func Count(bean interface{}) (int64, error) {
|
||||
return x.Count(bean)
|
||||
}
|
||||
|
||||
// IsTableNotEmpty returns true if table has at least one record
|
||||
func IsTableNotEmpty(tableName string) (bool, error) {
|
||||
return x.Table(tableName).Exist()
|
||||
}
|
||||
|
||||
// DeleteAllRecords will delete all the records of this table
|
||||
func DeleteAllRecords(tableName string) error {
|
||||
_, err := x.Exec(fmt.Sprintf("DELETE FROM %s", tableName))
|
||||
return err
|
||||
}
|
||||
|
||||
// GetMaxID will return max id of the table
|
||||
func GetMaxID(beanOrTableName interface{}) (maxID int64, err error) {
|
||||
_, err = x.Select("MAX(id)").Table(beanOrTableName).Get(&maxID)
|
||||
return
|
||||
}
|
||||
|
||||
// FindByMaxID filled results as the condition from database
|
||||
func FindByMaxID(maxID int64, limit int, results interface{}) error {
|
||||
return x.Where("id <= ?", maxID).
|
||||
OrderBy("id DESC").
|
||||
Limit(limit).
|
||||
Find(results)
|
||||
}
|
||||
|
@ -1112,10 +1112,6 @@ func MigrateRepositoryGitData(doer, u *User, repo *Repository, opts api.MigrateR
|
||||
repo, err = CleanUpMigrateInfo(repo)
|
||||
}
|
||||
|
||||
if err != nil && !repo.IsEmpty {
|
||||
UpdateRepoIndexer(repo)
|
||||
}
|
||||
|
||||
return repo, err
|
||||
}
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
365
modules/indexer/code/bleve.go
Normal file
365
modules/indexer/code/bleve.go
Normal file
File diff suppressed because it is too large
Load Diff
16
modules/indexer/code/bleve_test.go
Normal file
16
modules/indexer/code/bleve_test.go
Normal file
@ -0,0 +1,16 @@
|
||||
// Copyright 2019 The Gitea Authors. All rights reserved.
|
||||
// Use of this source code is governed by a MIT-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package code
|
||||
|
||||
import (
|
||||
"path/filepath"
|
||||
"testing"
|
||||
|
||||
"code.gitea.io/gitea/models"
|
||||
)
|
||||
|
||||
func TestMain(m *testing.M) {
|
||||
models.MainTest(m, filepath.Join("..", "..", ".."))
|
||||
}
|
@ -6,9 +6,11 @@ package indexer
|
||||
|
||||
import (
|
||||
"code.gitea.io/gitea/models"
|
||||
code_indexer "code.gitea.io/gitea/modules/indexer/code"
|
||||
issue_indexer "code.gitea.io/gitea/modules/indexer/issues"
|
||||
"code.gitea.io/gitea/modules/log"
|
||||
"code.gitea.io/gitea/modules/notification/base"
|
||||
"code.gitea.io/gitea/modules/setting"
|
||||
)
|
||||
|
||||
type indexerNotifier struct {
|
||||
@ -103,7 +105,21 @@ func (r *indexerNotifier) NotifyDeleteComment(doer *models.User, comment *models
|
||||
|
||||
func (r *indexerNotifier) NotifyDeleteRepository(doer *models.User, repo *models.Repository) {
|
||||
issue_indexer.DeleteRepoIssueIndexer(repo)
|
||||
models.DeleteRepoFromIndexer(repo)
|
||||
if setting.Indexer.RepoIndexerEnabled {
|
||||
code_indexer.DeleteRepoFromIndexer(repo)
|
||||
}
|
||||
}
|
||||
|
||||
func (r *indexerNotifier) NotifyMigrateRepository(doer *models.User, u *models.User, repo *models.Repository) {
|
||||
if setting.Indexer.RepoIndexerEnabled && !repo.IsEmpty {
|
||||
code_indexer.UpdateRepoIndexer(repo)
|
||||
}
|
||||
}
|
||||
|
||||
func (r *indexerNotifier) NotifyPushCommits(pusher *models.User, repo *models.Repository, refName, oldCommitID, newCommitID string, commits *models.PushCommits) {
|
||||
if setting.Indexer.RepoIndexerEnabled && refName == repo.DefaultBranch {
|
||||
code_indexer.UpdateRepoIndexer(repo)
|
||||
}
|
||||
}
|
||||
|
||||
func (r *indexerNotifier) NotifyIssueChangeContent(doer *models.User, issue *models.Issue, oldContent string) {
|
||||
|
@ -513,10 +513,6 @@ func PushUpdate(repo *models.Repository, branch string, opts PushUpdateOptions)
|
||||
|
||||
go pull_service.AddTestPullRequestTask(pusher, repo.ID, branch, true)
|
||||
|
||||
if opts.RefFullName == git.BranchPrefix+repo.DefaultBranch {
|
||||
models.UpdateRepoIndexer(repo)
|
||||
}
|
||||
|
||||
if err = models.WatchIfAuto(opts.PusherID, repo.ID, true); err != nil {
|
||||
log.Warn("Fail to perform auto watch on user %v for repo %v: %v", opts.PusherID, repo.ID, err)
|
||||
}
|
||||
|
@ -15,6 +15,7 @@ import (
|
||||
"code.gitea.io/gitea/modules/cron"
|
||||
"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"
|
||||
"code.gitea.io/gitea/modules/log"
|
||||
"code.gitea.io/gitea/modules/markup"
|
||||
@ -102,7 +103,7 @@ func GlobalInit() {
|
||||
// Booting long running goroutines.
|
||||
cron.NewContext()
|
||||
issue_indexer.InitIssueIndexer(false)
|
||||
models.InitRepoIndexer()
|
||||
code_indexer.InitRepoIndexer()
|
||||
mirror_service.InitSyncMirrors()
|
||||
webhook.InitDeliverHooks()
|
||||
pull_service.Init()
|
||||
|
Reference in New Issue
Block a user