mirror of
https://github.com/kevin-DL/services.git
synced 2026-01-11 19:04:35 +00:00
More admin data delete endpoints (#361)
This commit is contained in:
@@ -51,6 +51,7 @@ func (e *crawl) FetchAll() {
|
||||
return
|
||||
}
|
||||
|
||||
currList := map[string]bool{}
|
||||
for _, v := range records {
|
||||
feed := pb.Feed{}
|
||||
if err := json.Unmarshal(v.Value, &feed); err != nil {
|
||||
@@ -62,6 +63,22 @@ func (e *crawl) FetchAll() {
|
||||
if err != nil {
|
||||
log.Errorf("Error saving post: %v", err)
|
||||
}
|
||||
currList[feed.Url] = true
|
||||
}
|
||||
|
||||
// prune anything that has been deleted
|
||||
rssSync.Lock()
|
||||
defer rssSync.Unlock()
|
||||
for url, _ := range rssFeeds {
|
||||
if currList[url] {
|
||||
continue
|
||||
}
|
||||
// this isn't in the current list. delete from store any entries
|
||||
keys, _ := store.List(store.ListPrefix(generateEntryKey(url, "")))
|
||||
for _, k := range keys {
|
||||
store.Delete(k)
|
||||
}
|
||||
delete(rssFeeds, url)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -5,10 +5,13 @@ import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"hash/fnv"
|
||||
"strings"
|
||||
|
||||
"github.com/micro/micro/v3/service/errors"
|
||||
log "github.com/micro/micro/v3/service/logger"
|
||||
"github.com/micro/micro/v3/service/store"
|
||||
pauth "github.com/micro/services/pkg/auth"
|
||||
adminpb "github.com/micro/services/pkg/service/proto"
|
||||
|
||||
"github.com/micro/services/pkg/tenant"
|
||||
pb "github.com/micro/services/rss/proto"
|
||||
@@ -175,3 +178,32 @@ func (e *Rss) Remove(ctx context.Context, req *pb.RemoveRequest, rsp *pb.RemoveR
|
||||
|
||||
return e.store.Delete(generateFeedKey(ctx, req.Name))
|
||||
}
|
||||
|
||||
func (e *Rss) DeleteData(ctx context.Context, request *adminpb.DeleteDataRequest, response *adminpb.DeleteDataResponse) error {
|
||||
method := "admin.DeleteData"
|
||||
_, err := pauth.VerifyMicroAdmin(ctx, method)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if len(request.TenantId) == 0 {
|
||||
return errors.BadRequest(method, "Missing tenant ID")
|
||||
}
|
||||
split := strings.Split(request.TenantId, "/")
|
||||
tctx := tenant.NewContext(split[1], split[0], split[1])
|
||||
|
||||
prefix := generateFeedKey(tctx, "")
|
||||
records, err := e.store.Read(prefix, store.ReadPrefix())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
for _, val := range records {
|
||||
if err := e.store.Delete(val.Key); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
log.Infof("Delete %d records for %s", len(records), request.TenantId)
|
||||
return nil
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user