From 560c8a9143773a6b1565c7db9030413cd35f47d9 Mon Sep 17 00:00:00 2001 From: LittleSheep Date: Thu, 19 Sep 2024 22:25:53 +0800 Subject: [PATCH] :sparkles: Support broadcast deletion --- go.mod | 2 +- go.sum | 2 ++ pkg/internal/grpc/server.go | 3 +++ pkg/internal/grpc/services.go | 29 +++++++++++++++++++++++++++++ 4 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 pkg/internal/grpc/services.go diff --git a/go.mod b/go.mod index 9eb1b70..ccc5c35 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module git.solsynth.dev/hydrogen/paperclip go 1.21.6 require ( - git.solsynth.dev/hydrogen/dealer v0.0.0-20240917083841-b14c0240a75f + git.solsynth.dev/hydrogen/dealer v0.0.0-20240919131945-00c52eba6827 github.com/go-playground/validator/v10 v10.17.0 github.com/gofiber/fiber/v2 v2.52.4 github.com/google/uuid v1.6.0 diff --git a/go.sum b/go.sum index 40e9e2d..4a8777f 100644 --- a/go.sum +++ b/go.sum @@ -6,6 +6,8 @@ git.solsynth.dev/hydrogen/dealer v0.0.0-20240914133539-4a48b980f0b3 h1:ucko8l9rC git.solsynth.dev/hydrogen/dealer v0.0.0-20240914133539-4a48b980f0b3/go.mod h1:Q51JPkKnV0UoOT/IRmdBh5CyfSlp7s8BRGzgooYHqkI= git.solsynth.dev/hydrogen/dealer v0.0.0-20240917083841-b14c0240a75f h1:3jLpcws4/zmNUA60w1RtAtGNjcQd5NZCcbW5HQcUcvw= git.solsynth.dev/hydrogen/dealer v0.0.0-20240917083841-b14c0240a75f/go.mod h1:Q51JPkKnV0UoOT/IRmdBh5CyfSlp7s8BRGzgooYHqkI= +git.solsynth.dev/hydrogen/dealer v0.0.0-20240919131945-00c52eba6827 h1:1ACMPm2ArRpVNYrND/y/R6oPiuMfKe49fP+lG3mcNug= +git.solsynth.dev/hydrogen/dealer v0.0.0-20240919131945-00c52eba6827/go.mod h1:Q51JPkKnV0UoOT/IRmdBh5CyfSlp7s8BRGzgooYHqkI= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= diff --git a/pkg/internal/grpc/server.go b/pkg/internal/grpc/server.go index 6cb38c3..814a3c4 100644 --- a/pkg/internal/grpc/server.go +++ b/pkg/internal/grpc/server.go @@ -3,6 +3,7 @@ package grpc import ( "net" + "git.solsynth.dev/hydrogen/dealer/pkg/proto" "github.com/spf13/viper" "google.golang.org/grpc" health "google.golang.org/grpc/health/grpc_health_v1" @@ -10,6 +11,7 @@ import ( ) type Server struct { + proto.UnimplementedServiceDirectoryServer } var S *grpc.Server @@ -18,6 +20,7 @@ func NewGRPC() { S = grpc.NewServer() health.RegisterHealthServer(S, &Server{}) + proto.RegisterServiceDirectoryServer(S, &Server{}) reflection.Register(S) } diff --git a/pkg/internal/grpc/services.go b/pkg/internal/grpc/services.go new file mode 100644 index 0000000..31a5518 --- /dev/null +++ b/pkg/internal/grpc/services.go @@ -0,0 +1,29 @@ +package grpc + +import ( + "context" + "strconv" + + "git.solsynth.dev/hydrogen/dealer/pkg/proto" + "git.solsynth.dev/hydrogen/paperclip/pkg/internal/database" + "git.solsynth.dev/hydrogen/paperclip/pkg/internal/models" +) + +func (v *Server) BroadcastDeletion(ctx context.Context, request *proto.DeletionRequest) (*proto.DeletionResponse, error) { + switch request.GetResourceType() { + case "account": + numericId, err := strconv.Atoi(request.GetResourceId()) + if err != nil { + break + } + for _, model := range database.AutoMaintainRange { + switch model.(type) { + default: + database.C.Delete(model, "account_id = ?", numericId) + } + } + database.C.Delete(&models.Account{}, "id = ?", numericId) + } + + return &proto.DeletionResponse{}, nil +}