mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-01-27 23:47:33 -05:00
Remove items from the index when they were deleted
This commit is contained in:
@@ -77,8 +77,8 @@ func (i *Index) Add(ref *sprovider.Reference, ri *sprovider.ResourceInfo) error
|
||||
}
|
||||
|
||||
// Remove removes an entity from the index
|
||||
func (i *Index) Remove(ri *sprovider.ResourceInfo) error {
|
||||
return i.bleveIndex.Delete(idToBleveId(ri.Id))
|
||||
func (i *Index) Remove(id *sprovider.ResourceId) error {
|
||||
return i.bleveIndex.Delete(idToBleveId(id))
|
||||
}
|
||||
|
||||
// Search searches the index according to the criteria specified in the given SearchIndexRequest
|
||||
|
||||
@@ -248,7 +248,7 @@ var _ = Describe("Index", func() {
|
||||
count, _ := bleveIndex.DocCount()
|
||||
Expect(count).To(Equal(uint64(1)))
|
||||
|
||||
err = i.Remove(ri)
|
||||
err = i.Remove(ri.Id)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
count, _ = bleveIndex.DocCount()
|
||||
Expect(count).To(Equal(uint64(0)))
|
||||
|
||||
@@ -52,11 +52,11 @@ func (_m *IndexClient) DocCount() (uint64, error) {
|
||||
}
|
||||
|
||||
// Remove provides a mock function with given fields: ri
|
||||
func (_m *IndexClient) Remove(ri *providerv1beta1.ResourceInfo) error {
|
||||
func (_m *IndexClient) Remove(ri *providerv1beta1.ResourceId) error {
|
||||
ret := _m.Called(ri)
|
||||
|
||||
var r0 error
|
||||
if rf, ok := ret.Get(0).(func(*providerv1beta1.ResourceInfo) error); ok {
|
||||
if rf, ok := ret.Get(0).(func(*providerv1beta1.ResourceId) error); ok {
|
||||
r0 = rf(ri)
|
||||
} else {
|
||||
r0 = ret.Error(0)
|
||||
|
||||
@@ -51,6 +51,12 @@ func New(gwClient gateway.GatewayAPIClient, indexClient search.IndexClient, mach
|
||||
owner = &user.User{
|
||||
Id: e.Executant,
|
||||
}
|
||||
case events.ItemTrashed:
|
||||
err := p.indexClient.Remove(e.Id)
|
||||
if err != nil {
|
||||
p.logger.Error().Err(err).Interface("Id", e.Id).Msg("failed to remove item from index")
|
||||
}
|
||||
continue
|
||||
default:
|
||||
// Not sure what to do here. Skip.
|
||||
continue
|
||||
@@ -70,13 +76,19 @@ func New(gwClient gateway.GatewayAPIClient, indexClient search.IndexClient, mach
|
||||
|
||||
// Stat changed resource resource
|
||||
statRes, err := gwClient.Stat(ownerCtx, &provider.StatRequest{Ref: ref})
|
||||
if err != nil || statRes.Status.Code != rpc.Code_CODE_OK {
|
||||
p.logger.Error().Err(err).Interface("statRes", statRes).Msg("failed to stat the changed resource")
|
||||
if err != nil {
|
||||
p.logger.Error().Err(err).Msg("failed to stat the changed resource")
|
||||
}
|
||||
|
||||
switch statRes.Status.Code {
|
||||
case rpc.Code_CODE_OK:
|
||||
err = p.indexClient.Add(ref, statRes.Info)
|
||||
default:
|
||||
p.logger.Error().Interface("statRes", statRes).Msg("failed to stat the changed resource")
|
||||
}
|
||||
|
||||
err = p.indexClient.Add(ref, statRes.Info)
|
||||
if err != nil {
|
||||
p.logger.Error().Err(err).Msg("error adding resource to the index")
|
||||
p.logger.Error().Err(err).Msg("error adding updating the resource in the index")
|
||||
} else {
|
||||
p.logDocCount()
|
||||
}
|
||||
|
||||
@@ -107,7 +107,29 @@ var _ = Describe("Searchprovider", func() {
|
||||
called = true
|
||||
})
|
||||
eventsChan <- events.FileUploaded{
|
||||
FileID: ref,
|
||||
Ref: ref,
|
||||
Executant: user.Id,
|
||||
}
|
||||
|
||||
Eventually(func() bool {
|
||||
return called
|
||||
}).Should(BeTrue())
|
||||
})
|
||||
|
||||
It("removes an entry from the index when the file has been deleted", func() {
|
||||
called := false
|
||||
|
||||
gwClient.On("Stat", mock.Anything, mock.Anything).Return(&sprovider.StatResponse{
|
||||
Status: status.NewNotFound(context.Background(), ""),
|
||||
}, nil)
|
||||
indexClient.On("Remove", mock.MatchedBy(func(id *sprovider.ResourceId) bool {
|
||||
return id.OpaqueId == ri.Id.OpaqueId
|
||||
})).Return(nil).Run(func(args mock.Arguments) {
|
||||
called = true
|
||||
})
|
||||
eventsChan <- events.ItemTrashed{
|
||||
Ref: ref,
|
||||
Id: ri.Id,
|
||||
Executant: user.Id,
|
||||
}
|
||||
|
||||
|
||||
@@ -38,6 +38,6 @@ type ProviderClient interface {
|
||||
type IndexClient interface {
|
||||
Search(ctx context.Context, req *searchsvc.SearchIndexRequest) (*searchsvc.SearchIndexResponse, error)
|
||||
Add(ref *providerv1beta1.Reference, ri *providerv1beta1.ResourceInfo) error
|
||||
Remove(ri *providerv1beta1.ResourceInfo) error
|
||||
Remove(ri *providerv1beta1.ResourceId) error
|
||||
DocCount() (uint64, error)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user