diff --git a/id/json.go b/id/json.go index 0a0a5789e20ebb9a9c4b493fc72fc506592cf023..34b87589dfd81e6b793c5812fb2b90f43fb724f1 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 5c04331425e690cb515ea01b71326fa69b3a8ffa..501535fac8a0fec970c85ebf50e2d5a3b05107d6 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) }) } }