From 1a97f81674fffdc2e477d699aaefcf8230dd9224 Mon Sep 17 00:00:00 2001
From: ko_oler <kooler89@gmail.com>
Date: Tue, 6 Feb 2024 12:43:56 +0300
Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?=
 =?UTF-8?q?=D0=BD=D1=8B=20=D0=BA=D0=BE=D0=BD=D1=81=D1=82=D1=80=D1=83=D0=BA?=
 =?UTF-8?q?=D1=82=D0=BE=D1=80=D1=8B=20=D0=B4=D0=BB=D1=8F=20=D1=82=D0=B8?=
 =?UTF-8?q?=D0=BF=D0=BE=D0=B2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 id/client.go       | 4 ++++
 id/collection.go   | 4 ++++
 id/environment.go  | 4 ++++
 id/field.go        | 3 +++
 id/item.go         | 4 ++++
 id/organization.go | 4 ++++
 id/revision.go     | 4 ++++
 id/role.go         | 4 ++++
 id/schema.go       | 4 ++++
 id/service.go      | 4 ++++
 id/space.go        | 3 +++
 id/system.go       | 3 +++
 id/user.go         | 4 ++++
 13 files changed, 49 insertions(+)

diff --git a/id/client.go b/id/client.go
index ed730d32..db941c5a 100644
--- a/id/client.go
+++ b/id/client.go
@@ -55,3 +55,7 @@ func parseClientID(parts []string) (*ClientID, error) {
 	id.ClientID = parts[3]
 	return &id, nil
 }
+
+func NewClientID(spaceID, id string) *ID {
+	return &ID{Descriptor: &ClientID{SpaceID: SpaceID{SpaceID: spaceID}, ClientID: id}}
+}
diff --git a/id/collection.go b/id/collection.go
index 9829c7e6..e0f37585 100644
--- a/id/collection.go
+++ b/id/collection.go
@@ -54,3 +54,7 @@ func parseCollectionID(parts []string) (*CollectionID, error) {
 	id.EnvironmentID = *envID
 	return &id, nil
 }
+
+func NewCollectionID(spaceID, envID, id string) *ID {
+	return &ID{Descriptor: &CollectionID{EnvironmentID: EnvironmentID{SpaceID: SpaceID{SpaceID: spaceID}, EnvironmentID: envID}, CollectionID: id}}
+}
diff --git a/id/environment.go b/id/environment.go
index e2acdb61..d42df3e6 100644
--- a/id/environment.go
+++ b/id/environment.go
@@ -55,3 +55,7 @@ func parseEnvironmentID(parts []string) (*EnvironmentID, error) {
 	id.SpaceID = *spaceID
 	return &id, nil
 }
+
+func NewEnvironmentID(spaceID, id string) *ID {
+	return &ID{Descriptor: &EnvironmentID{SpaceID: SpaceID{SpaceID: spaceID}, EnvironmentID: id}}
+}
diff --git a/id/field.go b/id/field.go
index e0336141..ca157755 100644
--- a/id/field.go
+++ b/id/field.go
@@ -55,3 +55,6 @@ func parseFieldID(parts []string) (*FieldID, error) {
 	id.FieldName = parts[9]
 	return &id, nil
 }
+func NewFieldID(spaceID, envID, collID, itemID, id string) *ID {
+	return &ID{Descriptor: &FieldID{ItemID: ItemID{CollectionID: CollectionID{EnvironmentID: EnvironmentID{SpaceID: SpaceID{SpaceID: spaceID}, EnvironmentID: envID}, CollectionID: collID}, ItemID: itemID}, FieldName: id}}
+}
diff --git a/id/item.go b/id/item.go
index add303f6..70c3e7be 100644
--- a/id/item.go
+++ b/id/item.go
@@ -55,3 +55,7 @@ func parseItemID(parts []string) (*ItemID, error) {
 	id.ItemID = parts[7]
 	return &id, nil
 }
+
+func NewItemID(spaceID, envID, collID, id string) *ID {
+	return &ID{Descriptor: &ItemID{CollectionID: CollectionID{EnvironmentID: EnvironmentID{SpaceID: SpaceID{SpaceID: spaceID}, EnvironmentID: envID}, CollectionID: collID}, ItemID: id}}
+}
diff --git a/id/organization.go b/id/organization.go
index 94c1b2dc..fe9d2283 100644
--- a/id/organization.go
+++ b/id/organization.go
@@ -43,3 +43,7 @@ func parseOrganizationID(parts []string) (*OrganizationID, error) {
 	id.OrganizationID = parts[1]
 	return &id, nil
 }
+
+func NewOrganizationID(id string) *ID {
+	return &ID{Descriptor: &OrganizationID{OrganizationID: id}}
+}
diff --git a/id/revision.go b/id/revision.go
index d956b4f8..0cb417e1 100644
--- a/id/revision.go
+++ b/id/revision.go
@@ -55,3 +55,7 @@ func parseRevisionID(parts []string) (*RevisionID, error) {
 	id.RevisionID = parts[9]
 	return &id, nil
 }
+
+func NewRevisionID(spaceID, envID, collID, itemID, id string) *ID {
+	return &ID{Descriptor: &RevisionID{ItemID: ItemID{CollectionID: CollectionID{EnvironmentID: EnvironmentID{SpaceID: SpaceID{SpaceID: spaceID}, EnvironmentID: envID}, CollectionID: collID}, ItemID: itemID}, RevisionID: id}}
+}
diff --git a/id/role.go b/id/role.go
index d13062bb..abb6537f 100644
--- a/id/role.go
+++ b/id/role.go
@@ -55,3 +55,7 @@ func parseRoleID(parts []string) (*RoleID, error) {
 	id.RoleID = parts[3]
 	return &id, nil
 }
+
+func NewRoleID(spaceID, id string) *ID {
+	return &ID{Descriptor: &RoleID{SpaceID: SpaceID{SpaceID: spaceID}, RoleID: id}}
+}
diff --git a/id/schema.go b/id/schema.go
index cc78c6d0..e3afee8c 100644
--- a/id/schema.go
+++ b/id/schema.go
@@ -54,3 +54,7 @@ func parseSchemaID(parts []string) (*SchemaID, error) {
 	id.CollectionID = parts[5]
 	return &id, nil
 }
+
+func NewSchemaID(spaceID, envID, id string) *ID {
+	return &ID{Descriptor: &SchemaID{EnvironmentID: EnvironmentID{SpaceID: SpaceID{SpaceID: spaceID}, EnvironmentID: envID}, CollectionID: id}}
+}
diff --git a/id/service.go b/id/service.go
index 5583ae7d..23bb23aa 100644
--- a/id/service.go
+++ b/id/service.go
@@ -43,3 +43,7 @@ func parseServiceID(parts []string) (*ServiceID, error) {
 	id.ServiceID = parts[1]
 	return &id, nil
 }
+
+func NewServiceID(id string) *ID {
+	return &ID{Descriptor: &ServiceID{ServiceID: id}}
+}
diff --git a/id/space.go b/id/space.go
index fa6503ec..39096673 100644
--- a/id/space.go
+++ b/id/space.go
@@ -43,3 +43,6 @@ func parseSpaceID(parts []string) (*SpaceID, error) {
 	id.SpaceID = parts[1]
 	return &id, nil
 }
+func NewSpaceID(id string) *ID {
+	return &ID{Descriptor: &SpaceID{SpaceID: id}}
+}
diff --git a/id/system.go b/id/system.go
index 24d9737f..de2f3c25 100644
--- a/id/system.go
+++ b/id/system.go
@@ -17,3 +17,6 @@ func parseSystemID(parts []string) (*SystemID, error) {
 	}
 	return &id, nil
 }
+func NewSystemID() *ID {
+	return &ID{Descriptor: &SystemID{}}
+}
diff --git a/id/user.go b/id/user.go
index 77832ce2..c76f6c9f 100644
--- a/id/user.go
+++ b/id/user.go
@@ -43,3 +43,7 @@ func parseUserID(parts []string) (*UserID, error) {
 	id.UserID = parts[1]
 	return &id, nil
 }
+
+func NewUserID(id string) *ID {
+	return &ID{Descriptor: &UserID{UserID: id}}
+}
-- 
GitLab