gitea源码

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. // Copyright 2023 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package internal
  4. import (
  5. "context"
  6. "errors"
  7. "code.gitea.io/gitea/models/db"
  8. repo_model "code.gitea.io/gitea/models/repo"
  9. "code.gitea.io/gitea/modules/indexer"
  10. "code.gitea.io/gitea/modules/indexer/internal"
  11. )
  12. // Indexer defines an interface to index and search code contents
  13. type Indexer interface {
  14. internal.Indexer
  15. Index(ctx context.Context, repo *repo_model.Repository, sha string, changes *RepoChanges) error
  16. Delete(ctx context.Context, repoID int64) error
  17. Search(ctx context.Context, opts *SearchOptions) (int64, []*SearchResult, []*SearchResultLanguages, error)
  18. SupportedSearchModes() []indexer.SearchMode
  19. }
  20. type SearchOptions struct {
  21. RepoIDs []int64
  22. Keyword string
  23. Language string
  24. SearchMode indexer.SearchModeType
  25. db.Paginator
  26. }
  27. // NewDummyIndexer returns a dummy indexer
  28. func NewDummyIndexer() Indexer {
  29. return &dummyIndexer{
  30. Indexer: internal.NewDummyIndexer(),
  31. }
  32. }
  33. type dummyIndexer struct {
  34. internal.Indexer
  35. }
  36. func (d *dummyIndexer) SupportedSearchModes() []indexer.SearchMode {
  37. return nil
  38. }
  39. func (d *dummyIndexer) Index(ctx context.Context, repo *repo_model.Repository, sha string, changes *RepoChanges) error {
  40. return errors.New("indexer is not ready")
  41. }
  42. func (d *dummyIndexer) Delete(ctx context.Context, repoID int64) error {
  43. return errors.New("indexer is not ready")
  44. }
  45. func (d *dummyIndexer) Search(ctx context.Context, opts *SearchOptions) (int64, []*SearchResult, []*SearchResultLanguages, error) {
  46. return 0, nil, nil, errors.New("indexer is not ready")
  47. }