mirror of
https://github.com/kevin-DL/services.git
synced 2026-01-17 21:34:56 +00:00
Delete data part 1 (#360)
This commit is contained in:
@@ -6,6 +6,10 @@ import (
|
||||
|
||||
"github.com/google/uuid"
|
||||
"github.com/micro/micro/v3/service/errors"
|
||||
"github.com/micro/micro/v3/service/logger"
|
||||
pauth "github.com/micro/services/pkg/auth"
|
||||
adminpb "github.com/micro/services/pkg/service/proto"
|
||||
"github.com/micro/services/pkg/tenant"
|
||||
|
||||
"github.com/micro/services/contact/domain"
|
||||
pb "github.com/micro/services/contact/proto"
|
||||
@@ -125,3 +129,42 @@ func (c *contact) List(ctx context.Context, req *pb.ListRequest, rsp *pb.ListRes
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *contact) 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])
|
||||
// load all keys
|
||||
keys := []string{}
|
||||
offset := uint(0)
|
||||
for {
|
||||
res, err := c.contact.List(tctx, offset, 100)
|
||||
if err != nil && !strings.Contains(err.Error(), "not found") {
|
||||
return err
|
||||
}
|
||||
for _, r := range res {
|
||||
keys = append(keys, r.Id)
|
||||
}
|
||||
if len(res) < 100 {
|
||||
break
|
||||
}
|
||||
offset += 100
|
||||
}
|
||||
for _, k := range keys {
|
||||
if err := c.contact.Delete(tctx, k); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
logger.Infof("Deleted %d keys for %s", len(keys), request.TenantId)
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package main
|
||||
|
||||
import (
|
||||
"github.com/micro/micro/v3/service/store"
|
||||
admin "github.com/micro/services/pkg/service/proto"
|
||||
|
||||
"github.com/micro/services/contact/domain"
|
||||
"github.com/micro/services/contact/handler"
|
||||
@@ -20,9 +21,10 @@ func main() {
|
||||
|
||||
contactDomain := domain.NewContactDomain(store.DefaultStore)
|
||||
|
||||
h := handler.NewContact(contactDomain)
|
||||
// Register handler
|
||||
pb.RegisterContactHandler(srv.Server(), handler.NewContact(contactDomain))
|
||||
|
||||
pb.RegisterContactHandler(srv.Server(), h)
|
||||
admin.RegisterAdminHandler(srv.Server(), h)
|
||||
// Run service
|
||||
if err := srv.Run(); err != nil {
|
||||
logger.Fatal(err)
|
||||
|
||||
Reference in New Issue
Block a user