From 2a2e4d8577a7b8fb2ba044060083095e01c52ceb Mon Sep 17 00:00:00 2001 From: Leonard Lyubich Date: Wed, 30 Sep 2020 18:59:31 +0300 Subject: [PATCH] [#164] sdk/object: Implement method to reset relation fields Signed-off-by: Leonard Lyubich --- pkg/object/raw.go | 5 +++++ pkg/object/raw_test.go | 10 ++++++++++ pkg/object/rw.go | 6 ++++++ 3 files changed, 21 insertions(+) diff --git a/pkg/object/raw.go b/pkg/object/raw.go index bb7401b..f29e001 100644 --- a/pkg/object/raw.go +++ b/pkg/object/raw.go @@ -143,3 +143,8 @@ func (o *RawObject) CutPayload() *RawObject { return nil } + +// ResetRelations removes all fields of links with other objects. +func (o *RawObject) ResetRelations() { + o.resetRelations() +} diff --git a/pkg/object/raw_test.go b/pkg/object/raw_test.go index a3119be..3931adb 100644 --- a/pkg/object/raw_test.go +++ b/pkg/object/raw_test.go @@ -265,3 +265,13 @@ func TestRawObject_SetParentID(t *testing.T) { require.Equal(t, id, obj.GetParentID()) } + +func TestRawObject_ResetRelations(t *testing.T) { + obj := NewRaw() + + obj.SetPreviousID(randID(t)) + + obj.ResetRelations() + + require.Nil(t, obj.GetPreviousID()) +} diff --git a/pkg/object/rw.go b/pkg/object/rw.go index b1b13c7..0e8e621 100644 --- a/pkg/object/rw.go +++ b/pkg/object/rw.go @@ -296,6 +296,12 @@ func (o *rwObject) setParent(v *Object) { }) } +func (o *rwObject) resetRelations() { + o.setHeaderField(func(h *object.Header) { + h.SetSplit(nil) + }) +} + // GetSessionToken returns token of the session // within which object was created. func (o *rwObject) GetSessionToken() *token.SessionToken {