From 3c83857de64446090895935057d6285b55167a4d Mon Sep 17 00:00:00 2001
From: Pavel Antonov <antonov@perx.ru>
Date: Tue, 29 Oct 2024 17:45:08 +0400
Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?=
 =?UTF-8?q?=D0=BD=D1=8B=20=D1=81=D0=BE=D0=BE=D0=B1=D1=89=D0=B5=D0=BD=D0=B8?=
 =?UTF-8?q?=D1=8F=20=D0=A1=D0=BE=D0=B1=D1=8B=D1=82=D0=B8=D0=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 proto/clients/clients.proto             | 22 +++++++
 proto/collaborators/collaborators.proto | 14 +++++
 proto/collections/collections.proto     | 21 +++++++
 proto/environments/environments.proto   | 20 +++++++
 proto/extensions/extension.proto        | 19 +++++++
 proto/files/files.proto                 | 16 ++++++
 proto/images/images.proto               |  1 +
 proto/items/items.proto                 | 34 +++++++++++
 proto/locales/locales.proto             | 17 ++++++
 proto/members/members.proto             | 14 +++++
 proto/organizations/organizations.proto | 14 +++++
 proto/roles/roles.proto                 | 15 +++++
 proto/spaces/spaces.proto               | 76 ++++++++++++-------------
 proto/users/users.proto                 | 28 +++++----
 14 files changed, 260 insertions(+), 51 deletions(-)

diff --git a/proto/clients/clients.proto b/proto/clients/clients.proto
index 8716932..992fa3c 100644
--- a/proto/clients/clients.proto
+++ b/proto/clients/clients.proto
@@ -118,3 +118,25 @@ service Clients  {
   // Enable - активирует/деактивирует клиента. Клиент не сможет обращаться к API платформы
   rpc Enable(EnableRequest) returns(google.protobuf.Empty) {}
 }
+
+message ClientsEvent {
+  string user_id = 1;
+  string space_id = 2;
+
+  message Create {}
+
+  message Update {}
+
+  message Delete {}
+
+  message Enable {
+    bool enable = 1;
+  }
+
+  oneof event {
+    Create create = 100;
+    Update update = 101;
+    Delete delete = 102;
+    Enable enable = 103;
+  }
+}
\ No newline at end of file
diff --git a/proto/collaborators/collaborators.proto b/proto/collaborators/collaborators.proto
index 263fc8b..c5a688d 100644
--- a/proto/collaborators/collaborators.proto
+++ b/proto/collaborators/collaborators.proto
@@ -50,3 +50,17 @@ service Collaborators {
   rpc ListCollaborators(ListCollaboratorsRequest) returns(ListCollaboratorsResponse) {}
   rpc ListSpaces(ListSpacesRequest) returns(ListSpacesResponse) {}
 }
+
+message CollaboratorEvent {
+  string space_id = 1;
+  string subject = 2;
+  string role = 3;
+
+  message Set {}
+  message Remove {}
+
+  oneof event {
+    Set set = 100;
+    Remove remove = 101;
+  }
+}
\ No newline at end of file
diff --git a/proto/collections/collections.proto b/proto/collections/collections.proto
index 1a56f94..7092f5d 100644
--- a/proto/collections/collections.proto
+++ b/proto/collections/collections.proto
@@ -169,3 +169,24 @@ service Collections  {
   // Удалить коллекцию
   rpc Delete(DeleteRequest) returns(google.protobuf.Empty) {}
 }
+
+message CollectionEvent {
+  string space_id = 1;
+  string env_id = 2;
+  string collection_id = 3;
+
+  message Create {}
+
+  message Update {}
+
+  message Delete {}
+
+  message SetSchema {}
+
+  oneof event {
+    Create create = 100;
+    Update update = 101;
+    Delete delete = 102;
+    SetSchema set_schema = 103;
+  }
+}
\ No newline at end of file
diff --git a/proto/environments/environments.proto b/proto/environments/environments.proto
index e24af36..51c410d 100644
--- a/proto/environments/environments.proto
+++ b/proto/environments/environments.proto
@@ -113,4 +113,24 @@ service Environments {
   //
   // В случае возникновения ошибок миграции они записываются в поле `Environment.state`
   rpc Migrate(MigrateRequest) returns(google.protobuf.Empty) {}
+}
+
+message EnvironmentEvent {
+  string space_id = 1;
+  string env_id = 2;
+
+  message Create {}
+
+  message Update {}
+
+  message Delete {}
+
+  message Migrate {}
+
+  oneof event {
+    Create create = 101;
+    Update update = 102;
+    Delete delete = 103;
+    Migrate migrate = 104;
+  }
 }
\ No newline at end of file
diff --git a/proto/extensions/extension.proto b/proto/extensions/extension.proto
index e1db1ee..bf19163 100644
--- a/proto/extensions/extension.proto
+++ b/proto/extensions/extension.proto
@@ -171,3 +171,22 @@ message ActionRequest {
   // Чтобы при выполнении действия открывалась форма параметров, необходимо указать `Action.params_collection`
   content.references.Reference params = 11020;
 }
+
+message ExtensionEvent {
+  string space_id = 1;
+  string extension = 2;
+
+  message Install {}
+
+  message Uninstall {}
+
+  message Action {
+    string action = 1;
+  }
+
+  oneof event {
+    Install install = 100;
+    Uninstall uninstall = 101;
+    Action action = 102;
+  }
+}
\ No newline at end of file
diff --git a/proto/files/files.proto b/proto/files/files.proto
index a09422c..37eb3a8 100644
--- a/proto/files/files.proto
+++ b/proto/files/files.proto
@@ -117,3 +117,19 @@ service Files {
   //  - Удаления связанных файлов конкретного типа (например, все 'thumbnails'). Передается 'ID' и 'Type'
   rpc DeleteFile(DeleteFileRequest) returns(google.protobuf.Empty) {}
 }
+
+message FileEvent {
+  string file_id = 1;
+
+  message Upload {}
+
+  message Move {}
+
+  message Delete {}
+
+  oneof event {
+    Upload upload = 100;
+    Move move = 101;
+    Delete delete = 102;
+  }
+}
\ No newline at end of file
diff --git a/proto/images/images.proto b/proto/images/images.proto
index b58c473..53f60e5 100644
--- a/proto/images/images.proto
+++ b/proto/images/images.proto
@@ -38,3 +38,4 @@ service Images {
   // Возвращает объект File с заполненным полем File.URL
   rpc Get(GetRequest) returns(GetResponse) {}
 }
+
diff --git a/proto/items/items.proto b/proto/items/items.proto
index a8cc3c8..e5bc985 100644
--- a/proto/items/items.proto
+++ b/proto/items/items.proto
@@ -454,3 +454,37 @@ service Items {
   rpc FindArchived(FindArchivedRequest) returns(FindArchivedResponse) {}
   rpc Unarchive(UnarchiveRequest) returns(google.protobuf.Empty) {}
 }
+
+
+message ItemEvent {
+  string space_id = 1;
+  string env_id = 2;
+  string collection_id = 3;
+  string item_id = 4;
+
+  message Create {}
+
+  message Update {
+    repeated string changed_fields = 1;
+  }
+
+  message Delete {}
+
+  message Publish {}
+
+  message Unpublish {}
+
+  message Archive {}
+
+  message Unarchive {}
+
+  oneof event {
+    Create create = 100;
+    Update update = 101;
+    Delete delete = 102;
+    Publish publish = 103;
+    Unpublish unpublish = 104;
+    Archive archive = 105;
+    Unarchive unarchive = 106;
+  }
+}
\ No newline at end of file
diff --git a/proto/locales/locales.proto b/proto/locales/locales.proto
index a2aa0e2..b7a51ed 100644
--- a/proto/locales/locales.proto
+++ b/proto/locales/locales.proto
@@ -56,4 +56,21 @@ service Locales {
 
   // Удалить локаль
   rpc Delete(DeleteRequest) returns(google.protobuf.Empty) {}
+}
+
+message LocaleEvent {
+  string locale_id = 1;
+  string space_id = 2;
+
+  message Create {}
+
+  message Update {}
+
+  message Delete {}
+
+  oneof event {
+    Create create = 100;
+    Update update = 101;
+    Delete delete = 102;
+  }
 }
\ No newline at end of file
diff --git a/proto/members/members.proto b/proto/members/members.proto
index 430691c..b828481 100644
--- a/proto/members/members.proto
+++ b/proto/members/members.proto
@@ -78,3 +78,17 @@ message OnCollaboratorSetResponse {
 service Observer {
   rpc OnCollaboratorSet(OnCollaboratorSetRequest) returns(OnCollaboratorSetResponse) {}
 }
+
+message MemberEvent {
+  string org_id = 1;
+  string user_id = 2;
+  Role role = 3;
+
+  message Set {}
+  message Remove {}
+
+  oneof event {
+    Set set = 100;
+    Remove remove = 101;
+  }
+}
\ No newline at end of file
diff --git a/proto/organizations/organizations.proto b/proto/organizations/organizations.proto
index a8b0399..745ef63 100644
--- a/proto/organizations/organizations.proto
+++ b/proto/organizations/organizations.proto
@@ -64,3 +64,17 @@ service Organizations {
   rpc Find(FindRequest) returns(FindResponse) {}
   rpc Update(UpdateRequest) returns(google.protobuf.Empty) {}
 }
+
+message OrganizationEvent {
+  string org_id = 1;
+
+  message Create {}
+  message Update {}
+  message Delete {}
+
+  oneof event {
+    Create create = 100;
+    Update update = 101;
+    Delete delete = 102;
+  }
+}
\ No newline at end of file
diff --git a/proto/roles/roles.proto b/proto/roles/roles.proto
index 04ad46b..06c72b1 100644
--- a/proto/roles/roles.proto
+++ b/proto/roles/roles.proto
@@ -85,4 +85,19 @@ service Roles  {
   // Delete - удаляет указанную роль из пространстве
   rpc Delete(DeleteRequest) returns(google.protobuf.Empty) {}
 
+}
+
+message RoleEvent {
+  string role_id = 1;
+  string space_id = 2;
+
+  message Create {}
+  message Update {}
+  message Delete {}
+
+  oneof event {
+    Create create = 100;
+    Update update = 101;
+    Delete delete = 102;
+  }
 }
\ No newline at end of file
diff --git a/proto/spaces/spaces.proto b/proto/spaces/spaces.proto
index c0c1e6d..2773a4f 100644
--- a/proto/spaces/spaces.proto
+++ b/proto/spaces/spaces.proto
@@ -124,46 +124,6 @@ message FindResponse {
   int32 total = 2;
 }
 
-message EventAbortTransfer {
-  string id = 1;
-  string ord_id = 2;
-}
-
-message EventCreate {
-  string id = 1;
-  string ord_id = 2;
-}
-
-message EventDelete {
-  string id = 1;
-  string ord_id = 2;
-}
-
-message EventMove {
-  string id = 1;
-  string ord_id = 2;
-}
-
-message EventTransfer {
-  string id = 1;
-  string ord_id = 2;
-}
-
-message EventUpdate {
-  string id = 1;
-  string ord_id = 2;
-}
-
-message EventUpdateConfig {
-  string id = 1;
-  string ord_id = 2;
-}
-
-message EventMigrate {
-  string id = 1;
-  string ord_id = 2;
-}
-
 service Spaces {
   rpc Create(CreateRequest) returns(CreateResponse) {}
   rpc Get(GetRequest) returns(GetResponse) {}
@@ -194,3 +154,39 @@ service Spaces {
   // осуществлен вне зависимости от того, был он инициирован через метод `Transfer` или нет
   rpc Move(MoveRequest) returns(google.protobuf.Empty) {}
 }
+
+// SpacesEvent описывает события сервиса Spaces, связанные с пространствами
+message SpaceEvent {
+  // Идентификатор пространства
+  string space_id = 1;
+  // Идентификатор организации
+  string org_id = 2;
+
+  // Событие создания пространства
+  message Create {}
+
+  // Событие обновления пространства
+  message Update {}
+
+  // Событие удаления пространства
+  message Delete {}
+
+  // Событие перемещения пространства между организациями
+  message Move {
+    string prev_org_id = 1;
+  }
+
+  // Событие изменения состояния пространства
+  message StateChange {
+    StateInfo state = 1;
+    StateInfo prev = 2;
+  }
+
+  oneof event {
+    Create create = 100;
+    Update update = 101;
+    Delete delete = 102;
+    Move move = 103;
+    StateChange state_change = 104;
+  }
+}
\ No newline at end of file
diff --git a/proto/users/users.proto b/proto/users/users.proto
index 4a5c380..9a86822 100644
--- a/proto/users/users.proto
+++ b/proto/users/users.proto
@@ -73,17 +73,6 @@ message GetByIdentityResponse {
   User user = 1;
 }
 
-message EventCreate {
-  string id = 1;
-}
-
-message EventUpdate {
-  string id = 1;
-}
-message EventDelete {
-  string id = 1;
-}
-
 service Users  {
   // Создание пользователя или регистрация текущего пользователя в системе, если create.id == `current`
   rpc Create(CreateRequest) returns(CreateResponse) {}
@@ -107,3 +96,20 @@ service Users  {
   // запросов - авторизация вернет ошибку `access denied`
   rpc GetByIdentity(GetByIdentityRequest) returns(GetByIdentityResponse) {}
 }
+
+
+message UserEvent {
+  string user_id = 1;
+
+  message Create {}
+
+  message Update {}
+
+  message Delete {}
+
+  oneof event {
+    Create create = 100;
+    Update update = 101;
+    Delete delete = 102;
+  }
+}
\ No newline at end of file
-- 
GitLab