Skip to content

Commit 119effb

Browse files
committed
Merge branch 'feat/1.1.2/search' into feat/1.1.2/user
# Conflicts: # plugin/search.go
2 parents 16a4230 + be52316 commit 119effb

4 files changed

Lines changed: 56 additions & 3 deletions

File tree

cmd/wire_gen.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package search_sync
2+
3+
import (
4+
"context"
5+
"github.com/answerdev/answer/internal/base/data"
6+
"github.com/answerdev/answer/internal/base/pager"
7+
"github.com/answerdev/answer/internal/entity"
8+
"github.com/answerdev/answer/plugin"
9+
)
10+
11+
func NewPluginSyncer(data *data.Data) plugin.SearchSyncer {
12+
return &PluginSyncer{data: data}
13+
}
14+
15+
type PluginSyncer struct {
16+
data *data.Data
17+
}
18+
19+
func (p *PluginSyncer) GetAnswersPage(ctx context.Context, page, pageSize int) (answerList []*entity.Answer, total int64, err error) {
20+
answerList = make([]*entity.Answer, 0)
21+
total, err = pager.Help(page, pageSize, answerList, &entity.Answer{}, p.data.DB.Context(ctx))
22+
return answerList, total, err
23+
}
24+
25+
func (p *PluginSyncer) GetQuestionsPage(ctx context.Context, page, pageSize int) (questionList []*entity.Question, total int64, err error) {
26+
questionList = make([]*entity.Question, 0)
27+
total, err = pager.Help(page, pageSize, questionList, &entity.Question{}, p.data.DB.Context(ctx))
28+
return questionList, total, err
29+
}

internal/service/plugin_common/plugin_common_service.go

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ package plugin_common
33
import (
44
"context"
55
"encoding/json"
6+
"github.com/answerdev/answer/internal/base/data"
7+
"github.com/answerdev/answer/internal/repo/search_sync"
68

79
"github.com/answerdev/answer/internal/base/constant"
810
"github.com/answerdev/answer/internal/base/reason"
@@ -23,12 +25,15 @@ type PluginConfigRepo interface {
2325
type PluginCommonService struct {
2426
configService *config.ConfigService
2527
pluginConfigRepo PluginConfigRepo
28+
data *data.Data
2629
}
2730

2831
// NewPluginCommonService new report service
2932
func NewPluginCommonService(
3033
pluginConfigRepo PluginConfigRepo,
31-
configService *config.ConfigService) *PluginCommonService {
34+
configService *config.ConfigService,
35+
data *data.Data,
36+
) *PluginCommonService {
3237

3338
// init plugin status
3439
pluginStatus, err := configService.GetStringValue(context.TODO(), constant.PluginStatus)
@@ -61,6 +66,7 @@ func NewPluginCommonService(
6166
return &PluginCommonService{
6267
configService: configService,
6368
pluginConfigRepo: pluginConfigRepo,
69+
data: data,
6470
}
6571
}
6672

@@ -76,5 +82,16 @@ func (ps *PluginCommonService) UpdatePluginStatus(ctx context.Context) (err erro
7682
// UpdatePluginConfig update plugin config
7783
func (ps *PluginCommonService) UpdatePluginConfig(ctx context.Context, req *schema.UpdatePluginConfigReq) (err error) {
7884
configValue, _ := json.Marshal(req.ConfigFields)
79-
return ps.pluginConfigRepo.SavePluginConfig(ctx, req.PluginSlugName, string(configValue))
85+
err = ps.pluginConfigRepo.SavePluginConfig(ctx, req.PluginSlugName, string(configValue))
86+
if err != nil {
87+
return err
88+
}
89+
90+
_ = plugin.CallSearch(func(search plugin.Search) error {
91+
if search.Info().SlugName == req.PluginSlugName {
92+
search.RegisterSyncer(ctx, search_sync.NewPluginSyncer(ps.data))
93+
}
94+
return nil
95+
})
96+
return nil
8097
}

plugin/search.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package plugin
22

33
import (
44
"context"
5+
"github.com/answerdev/answer/internal/entity"
56
)
67

78
type SearchResult struct {
@@ -84,6 +85,7 @@ const (
8485
type Search interface {
8586
Base
8687
Description() SearchDesc
88+
RegisterSyncer(ctx context.Context, syncer SearchSyncer)
8789
SearchContents(ctx context.Context, cond *SearchBasicCond) (res []SearchResult, total int64, err error)
8890
SearchQuestions(ctx context.Context, cond *SearchBasicCond) (res []SearchResult, total int64, err error)
8991
SearchAnswers(ctx context.Context, cond *SearchBasicCond) (res []SearchResult, total int64, err error)
@@ -96,6 +98,11 @@ type SearchDesc struct {
9698
Icon string `json:"icon"`
9799
}
98100

101+
type SearchSyncer interface {
102+
GetAnswersPage(ctx context.Context, page, pageSize int) (answerList []*entity.Answer, total int64, err error)
103+
GetQuestionsPage(ctx context.Context, page, pageSize int) (questionList []*entity.Question, total int64, err error)
104+
}
105+
99106
var (
100107
// CallUserCenter is a function that calls all registered parsers
101108
CallSearch,

0 commit comments

Comments
 (0)