From ab77ca536c6c77bb915c9322f54a76b78e883244 Mon Sep 17 00:00:00 2001 From: Pavel Antonov <antonov@perx.ru> Date: Fri, 15 Nov 2024 11:53:04 +0400 Subject: [PATCH] Events (WIP) --- proto/events/event.proto | 158 +++++++++++++++++++++++++++++++++------ 1 file changed, 135 insertions(+), 23 deletions(-) diff --git a/proto/events/event.proto b/proto/events/event.proto index 98d2c39..98fbc88 100644 --- a/proto/events/event.proto +++ b/proto/events/event.proto @@ -5,6 +5,8 @@ package events; option go_package = "git.perx.ru/perxis/perxis-go/proto/events"; import "google/protobuf/struct.proto"; +import "google/protobuf/any.proto"; +import "google/protobuf/api.proto"; import "google/protobuf/timestamp.proto"; import "spaces/spaces.proto"; import "users/users.proto"; @@ -20,37 +22,147 @@ import "extensions/extension.proto"; import "items/items.proto"; import "members/members.proto"; -message EventMetadata { - -} - // Event описывает все события передаваемые в системе message Event { - // Идентификатор события string id = 1; // Время наступления события google.protobuf.Timestamp time = 2; + // Сервис, инициировавший событие + string service = 3; + + // Имя события + string name = 4; + + // Тема события + string subject = 5; + // Идентификатор инициатора события - string principal = 5; - - EventMetadata metadata = 10; - - oneof event { - account.organizations.OrganizationEvent organization = 200; - account.users.UserEvent user = 250; - account.members.MemberEvent member = 275; - content.spaces.SpaceEvent space = 300; - content.environments.EnvironmentEvent environment = 400; - content.collections.CollectionEvent collection = 450; - content.items.ItemEvent item = 500; - content.roles.RoleEvent role = 550; - content.clients.ClientEvent client = 600; - content.locales.LocaleEvent locale = 700; - content.collaborators.CollaboratorEvent collaborator = 800; - files.FileEvent file = 900; - extensions.ExtensionEvent extension = 1000; + string principal = 6; + + // Теги события + repeated string tags = 7; + + // Идентификатор трассировки + string traceId = 8; + + // Cодержимое события + Message message = 10; + + // Метаданные события + Metadata metadata = 100; +} + +message Metadata {} + +message Message { + oneof value { + Account.Organizations.Create org_create = 100; + Account.Organizations.Update org_update = 101; + Account.Organizations.Delete org_delete = 102; + + Account.Users.Create user_create = 200; + Account.Users.Update user_update = 201; + Account.Users.Delete user_delete = 202; + + Account.Members.Set member_set = 300; + Account.Members.Remove member_remove = 301; + + Content.Spaces.Create space_create = 400; + Content.Spaces.Update space_update = 401; + Content.Spaces.Delete space_delete = 402; + Content.Spaces.Move space_move = 403; + Content.Spaces.StateChange space_state_change = 404; + + // account.organizations.OrganizationEvent organization = 200; + // account.users.UserEvent user = 250; +// account.members.MemberEvent member = 275; +// content.spaces.SpaceEvent space = 300; +// content.environments.EnvironmentEvent environment = 400; +// content.collections.CollectionEvent collection = 450; +// content.items.ItemEvent item = 500; +// content.roles.RoleEvent role = 550; +// content.clients.ClientEvent client = 600; +// content.locales.LocaleEvent locale = 700; +// content.collaborators.CollaboratorEvent collaborator = 800; +// files.FileEvent file = 900; +// extensions.ExtensionEvent extension = 1000; } +} + +message Account { + message Organizations { + message Create { + string org_id = 1; + } + + message Update { + string org_id = 1; + } + message Delete { + string org_id = 1; + } + } + + message Users { + message Create { + string user_id = 1; + } + message Update { + string user_id = 1; + } + message Delete { + string user_id = 1; + } + } + + message Members { + message Set{} + message Remove {} + + string org_id = 1; + string user_id = 2; + string role_id = 3; + + oneof value { + Set set = 100; + Remove remove = 101; + } + } +} + +message Content { + + message Spaces { + message Create { + string space_id = 1; + string org_id = 2; + } + + message Update { + string space_id = 1; + string org_id = 2; + } + + message Delete { + string space_id = 1; + string org_id = 2; + } + + message Move { + string space_id = 1; + string org_id = 2; + string prev_org_id = 3; + } + + message StateChange { + string space_id = 1; + string org_id = 2; + content.spaces.StateInfo state = 3; + content.spaces.StateInfo prev = 4; + } + } + } \ No newline at end of file -- GitLab