From 18f98d06a2e0403e8f4a90964529c96389893fd6 Mon Sep 17 00:00:00 2001 From: Anton Sattarov <sattarov@perx.ru> Date: Fri, 5 Apr 2024 10:44:18 +0000 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D1=8F=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=BB=D1=83=D1=87=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BC?= =?UTF-8?q?=D0=B5=D1=82=D0=B0=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B=D1=85=20=D0=B8?= =?UTF-8?q?=D0=B7=20=D0=B7=D0=B0=D0=BF=D1=80=D0=BE=D1=81=D0=B0=20=D0=BA=20?= =?UTF-8?q?actions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/extension/action.go | 29 ++++++++++++++++++++++++++++- pkg/references/reference.go | 18 ++++++++++++++++++ 2 files changed, 46 insertions(+), 1 deletion(-) diff --git a/pkg/extension/action.go b/pkg/extension/action.go index a8062d3d..55827d81 100644 --- a/pkg/extension/action.go +++ b/pkg/extension/action.go @@ -1,6 +1,8 @@ package extension import ( + "strings" + "git.perx.ru/perxis/perxis-go/pkg/references" pb "git.perx.ru/perxis/perxis-go/proto/extensions" "github.com/mitchellh/mapstructure" @@ -116,7 +118,7 @@ func ActionToMap(action *Action) map[string]interface{} { if action == nil { return nil } - + res := make(map[string]interface{}) if err := mapstructure.Decode(action, &res); err != nil { return nil @@ -274,3 +276,28 @@ func ActionToPB(a *Action) *pb.Action { Order: a.Order, } } + +func (r *ActionRequest) NewSubRequest() *ActionRequest { + md := map[string]string{ + "request_extension": r.Extension, + "request_action": r.Action, + "request_space_id": r.SpaceID, + "request_env_id": r.EnvID, + "request_collection_id": r.CollectionID, + "request_item_id": r.ItemID, + "request_item_ids": strings.Join(r.ItemIDs, ","), + "request_fields": strings.Join(r.Fields, ","), + "request_refs": references.ReferenceListToString(r.Refs), + "request_params": r.Params.String(), + } + + for k, v := range r.Metadata { + if _, exist := md[k]; !exist { + md[k] = v + } + } + + return &ActionRequest{ + Metadata: md, + } +} diff --git a/pkg/references/reference.go b/pkg/references/reference.go index 171ded42..75b9bc74 100644 --- a/pkg/references/reference.go +++ b/pkg/references/reference.go @@ -1,6 +1,8 @@ package references import ( + "strings" + "git.perx.ru/perxis/perxis-go/pkg/items" pb "git.perx.ru/perxis/perxis-go/proto/references" "go.mongodb.org/mongo-driver/bson" @@ -82,6 +84,22 @@ func ReferenceListToPB(refs []*Reference) []*pb.Reference { return list } +func ReferenceListToString(refs []*Reference) string { + var res strings.Builder + + for _, ref := range refs { + res.WriteString(ref.String()) + } + return res.String() +} + +func ReferenceListToStrings(refs []*Reference) (res []string) { + for _, ref := range refs { + res = append(res, ref.String()) + } + return +} + func (r *Reference) String() string { if r == nil { return "" -- GitLab