From 188bef62c950f9a2f8411906197eac12c144b0d7 Mon Sep 17 00:00:00 2001
From: ko_oler <kooler89@gmail.com>
Date: Fri, 2 Feb 2024 13:12:41 +0300
Subject: [PATCH] =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B8=20=D0=BF?=
 =?UTF-8?q?=D0=BE=20=D0=9F=D0=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 id/json.go      | 53 ++-----------------------------------------------
 id/json_test.go |  2 +-
 2 files changed, 3 insertions(+), 52 deletions(-)

diff --git a/id/json.go b/id/json.go
index 0a0a5789..34b87589 100644
--- a/id/json.go
+++ b/id/json.go
@@ -14,59 +14,10 @@ func (id *ID) UnmarshalJSON(b []byte) error {
 	if err = jsoniter.Unmarshal(b, &s); err != nil {
 		return err
 	}
-	id.Descriptor, err = Parse(s)
-	switch id.Type() {
-	case Space:
-		m := id.ToMap()
-		id.Descriptor = new(SpaceID)
-		_ = id.FromMap(m)
-	case Environment:
-		m := id.ToMap()
-		id.Descriptor = new(EnvironmentID)
-		_ = id.FromMap(m)
-	case Collection:
-		m := id.ToMap()
-		id.Descriptor = new(CollectionID)
-		_ = id.FromMap(m)
-	case Schema:
-		m := id.ToMap()
-		id.Descriptor = new(SchemaID)
-		_ = id.FromMap(m)
-	case Item:
-		m := id.ToMap()
-		id.Descriptor = new(ItemID)
-		_ = id.FromMap(m)
-	case Revision:
-		m := id.ToMap()
-		id.Descriptor = new(RevisionID)
-		_ = id.FromMap(m)
-	case Field:
-		m := id.ToMap()
-		id.Descriptor = new(FieldID)
-		_ = id.FromMap(m)
-	case Client:
-		m := id.ToMap()
-		id.Descriptor = new(ClientID)
-		_ = id.FromMap(m)
-	case Role:
-		m := id.ToMap()
-		id.Descriptor = new(RoleID)
-		_ = id.FromMap(m)
-	case User:
-		m := id.ToMap()
-		id.Descriptor = new(UserID)
-		_ = id.FromMap(m)
-	case Organization:
-		m := id.ToMap()
-		id.Descriptor = new(OrganizationID)
-		_ = id.FromMap(m)
-	case Service:
-		m := id.ToMap()
-		id.Descriptor = new(ServiceID)
-		_ = id.FromMap(m)
-	}
+	t, err := Parse(s)
 	if err != nil {
 		return err
 	}
+	*id = *t
 	return nil
 }
diff --git a/id/json_test.go b/id/json_test.go
index 5c043314..501535fa 100644
--- a/id/json_test.go
+++ b/id/json_test.go
@@ -155,7 +155,7 @@ func TestID_UnmarshalJSON(t *testing.T) {
 		t.Run(tt.id, func(t *testing.T) {
 			var i ID
 			require.NoError(t, i.UnmarshalJSON(tt.b))
-			assert.Equal(t, i, tt.want)
+			assert.Equal(t, tt.want, i)
 		})
 	}
 }
-- 
GitLab