From 277439a9ae475d5366fac1b0bf448a125c3f035a Mon Sep 17 00:00:00 2001 From: Anton Sattarov <sattarov@perx.ru> Date: Tue, 27 Dec 2022 16:05:20 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D0=BF=D0=B0=D1=80=D0=B0=D0=BC=D0=B5=D1=82=D1=80?= =?UTF-8?q?=20go=5Fpackage?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- proto/clients/clients.proto | 2 +- proto/collaborators/collaborators.proto | 2 +- proto/collections/collections.proto | 2 +- proto/common/common.proto | 2 +- proto/delivery/delivery.proto | 20 ++++++++- proto/environments/environments.proto | 8 +++- proto/extensions/extension.proto | 2 +- proto/extensions/manager.proto | 2 +- proto/files/files.proto | 2 +- proto/images/images.proto | 2 +- proto/invitations/invitations.proto | 2 +- proto/items/items.proto | 57 ++++++++++++++++++++++++- proto/locales/locales.proto | 2 +- proto/members/members.proto | 2 +- proto/organizations/organizations.proto | 2 +- proto/references/references.proto | 3 +- proto/roles/roles.proto | 2 +- proto/spaces/spaces.proto | 2 +- proto/users/users.proto | 2 +- proto/versions/account/versions.proto | 2 +- proto/versions/content/versions.proto | 2 +- 21 files changed, 101 insertions(+), 21 deletions(-) diff --git a/proto/clients/clients.proto b/proto/clients/clients.proto index c20c5d4..2720536 100644 --- a/proto/clients/clients.proto +++ b/proto/clients/clients.proto @@ -2,7 +2,7 @@ syntax = "proto3"; import "google/protobuf/empty.proto"; -option go_package = "git.perx.ru/perxis/perxis-go/proto/clients;clients"; +option go_package = "git.perx.ru/perxis/perxis-go/clients;clients"; package content.clients; diff --git a/proto/collaborators/collaborators.proto b/proto/collaborators/collaborators.proto index 263fc8b..8964249 100644 --- a/proto/collaborators/collaborators.proto +++ b/proto/collaborators/collaborators.proto @@ -3,7 +3,7 @@ syntax = "proto3"; import "google/protobuf/empty.proto"; import "common/common.proto"; -option go_package = "git.perx.ru/perxis/perxis-go/proto/collaborators;collaborators"; +option go_package = "git.perx.ru/perxis/perxis-go/collaborators;collaborators"; package content.collaborators; diff --git a/proto/collections/collections.proto b/proto/collections/collections.proto index aafd070..e1ae9b1 100644 --- a/proto/collections/collections.proto +++ b/proto/collections/collections.proto @@ -4,7 +4,7 @@ import "google/protobuf/empty.proto"; import "common/common.proto"; import "google/protobuf/timestamp.proto"; -option go_package = "git.perx.ru/perxis/perxis-go/proto/collections;collections"; +option go_package = "git.perx.ru/perxis/perxis-go/collections;collections"; package content.collections; diff --git a/proto/common/common.proto b/proto/common/common.proto index 60a918a..3097728 100644 --- a/proto/common/common.proto +++ b/proto/common/common.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -option go_package = "git.perx.ru/perxis/perxis-go/proto/common;common"; +option go_package = "git.perx.ru/perxis/perxis-go/common;common"; package common; diff --git a/proto/delivery/delivery.proto b/proto/delivery/delivery.proto index a3543e6..abfd148 100644 --- a/proto/delivery/delivery.proto +++ b/proto/delivery/delivery.proto @@ -4,8 +4,9 @@ import "locales/locales.proto"; import "environments/environments.proto"; import "collections/collections.proto"; import "items/items.proto"; +import "google/protobuf/struct.proto"; -option go_package = "git.perx.ru/perxis/perxis-go/proto/delivery;delivery"; +option go_package = "git.perx.ru/perxis/perxis-go/delivery;delivery"; package delivery; @@ -74,6 +75,21 @@ message FindItemsResponse{ int32 total = 2; } +message AggregateOptions { + map<string, string> fields = 1; +} + +message AggregateRequest { + string space_id = 1; + string env_id = 2; + string collection_id = 3; + content.items.Filter filter = 4; + AggregateOptions options = 10; +} +message AggregateResponse{ + google.protobuf.Struct result = 1; +} + service Delivery { rpc ListLocales(ListLocalesRequest) returns(ListLocalesResponse) {} @@ -85,4 +101,6 @@ service Delivery { rpc GetItem(GetItemRequest) returns(GetItemResponse) {} rpc FindItems(FindItemsRequest) returns(FindItemsResponse) {} + + rpc Aggregate(AggregateRequest) returns(AggregateResponse) {} } diff --git a/proto/environments/environments.proto b/proto/environments/environments.proto index d12cacc..93a173b 100644 --- a/proto/environments/environments.proto +++ b/proto/environments/environments.proto @@ -2,7 +2,7 @@ syntax = "proto3"; import "google/protobuf/empty.proto"; -option go_package = "git.perx.ru/perxis/perxis-go/proto/environments;environments"; +option go_package = "git.perx.ru/perxis/perxis-go/environments;environments"; package content.environments; @@ -74,6 +74,11 @@ message DeleteRequest { string env_id = 2; } +message MigrateRequest { + string space_id = 1; + string env_id = 2; +} + service Environments { rpc Create(CreateRequest) returns(CreateResponse) {} rpc Get(GetRequest) returns(GetResponse) {} @@ -82,4 +87,5 @@ service Environments { rpc SetAlias(SetAliasRequest) returns(google.protobuf.Empty) {} rpc RemoveAlias(RemoveAliasRequest) returns(google.protobuf.Empty) {} rpc Delete(DeleteRequest) returns(google.protobuf.Empty) {} + rpc Migrate(MigrateRequest) returns(google.protobuf.Empty) {} } \ No newline at end of file diff --git a/proto/extensions/extension.proto b/proto/extensions/extension.proto index fa91d9e..4a2d57f 100644 --- a/proto/extensions/extension.proto +++ b/proto/extensions/extension.proto @@ -10,7 +10,7 @@ */ syntax = "proto3"; -option go_package = "git.perx.ru/perxis/perxis-go/proto/extensions;extensions"; +option go_package = "git.perx.ru/perxis/perxis-go/extensions;extensions"; package extensions; diff --git a/proto/extensions/manager.proto b/proto/extensions/manager.proto index 0def401..8b0e289 100644 --- a/proto/extensions/manager.proto +++ b/proto/extensions/manager.proto @@ -27,7 +27,7 @@ */ syntax = "proto3"; -option go_package = "git.perx.ru/perxis/perxis-go/proto/extensions;extensions"; +option go_package = "git.perx.ru/perxis/perxis-go/extensions;extensions"; package extensions; diff --git a/proto/files/files.proto b/proto/files/files.proto index ff3cf8c..4c00d49 100644 --- a/proto/files/files.proto +++ b/proto/files/files.proto @@ -2,7 +2,7 @@ syntax = "proto3"; import "google/protobuf/empty.proto"; -option go_package = "git.perx.ru/perxis/perxis-go/proto/files;files"; +option go_package = "git.perx.ru/perxis/perxis-go/files;files"; package files; diff --git a/proto/images/images.proto b/proto/images/images.proto index b58c473..f22da2a 100644 --- a/proto/images/images.proto +++ b/proto/images/images.proto @@ -2,7 +2,7 @@ syntax = "proto3"; import "files/files.proto"; -option go_package = "git.perx.ru/perxis/perxis-go/proto/images;images"; +option go_package = "git.perx.ru/perxis/perxis-go/images;images"; package images; diff --git a/proto/invitations/invitations.proto b/proto/invitations/invitations.proto index c7be5b0..539c189 100644 --- a/proto/invitations/invitations.proto +++ b/proto/invitations/invitations.proto @@ -4,7 +4,7 @@ import "google/protobuf/timestamp.proto"; import "google/protobuf/empty.proto"; import "google/protobuf/wrappers.proto"; -option go_package = "git.perx.ru/perxis/perxis-go/proto/invitations;invitations"; +option go_package = "git.perx.ru/perxis/perxis-go/invitations;invitations"; package content.invitations; diff --git a/proto/items/items.proto b/proto/items/items.proto index 190eace..c02ab82 100644 --- a/proto/items/items.proto +++ b/proto/items/items.proto @@ -13,7 +13,7 @@ import "common/common.proto"; import "google/protobuf/timestamp.proto"; import "google/protobuf/struct.proto"; -option go_package = "git.perx.ru/perxis/perxis-go/proto/items;items"; +option go_package = "git.perx.ru/perxis/perxis-go/items;items"; package content.items; @@ -127,6 +127,25 @@ message ListRevisionsOptions { common.FindOptions options = 2; } +// Fields - поля которые должны быть возвращены или вычислены в результате. +// Ключ (string) - имя поля под которым будет добавляться результат. +// Значение (string) - является выражением, вычисление которого сформирует результат +// Функции для выражений (для поля F, типа T): +// - distinct(F) - все значения поля, тип результат []T +// - min(F) - минимальное значение поля, тип результат T +// - max(F) - максимальное значение поля, тип результат T +// - avg(F) - среднее значения поля, тип результат T +// - sum(F) - сумма значений поля, тип результат T +// - count() - число записей, тип результат int +// Пример: {'average C': 'avg(a.b.c)'} +message AggregateOptions { + map<string, string> fields = 1; +} + +message AggregatePublishedOptions { + map<string, string> fields = 1; +} + message CreateRequest { Item item = 1; CreateOptions options = 2; @@ -218,6 +237,31 @@ message FindPublishedResponse{ int32 total = 2; } +message AggregateRequest { + string space_id = 1; + string env_id = 2; + string collection_id = 3; + Filter filter = 4; + AggregateOptions options = 10; +} +/** + * Содержит в себе набор `название:значение`. Название соответствует переданному в AggregateOptions ключу. + */ +message AggregateResponse{ + google.protobuf.Struct result = 1; +} + +message AggregatePublishedRequest { + string space_id = 1; + string env_id = 2; + string collection_id = 3; + Filter filter = 4; + AggregatePublishedOptions options = 10; +} +message AggregatePublishedResponse{ + google.protobuf.Struct result = 1; +} + message GetRevisionRequest { string space_id = 1; string env_id = 2; @@ -295,6 +339,17 @@ service Items { rpc GetPublished(GetPublishedRequest) returns(GetPublishedResponse) {} rpc FindPublished(FindPublishedRequest) returns(FindPublishedResponse) {} + /** + * Расчет значений по существующим данным. Например, получение среднего значения поля + */ + rpc Aggregate(AggregateRequest) returns(AggregateResponse) {} + + + /** + * Расчет значений по существующим **опубликованным** данным. + */ + rpc AggregatePublished(AggregatePublishedRequest) returns(AggregatePublishedResponse) {} + rpc GetRevision(GetRevisionRequest) returns(GetRevisionResponse) {} rpc ListRevisions(ListRevisionsRequest) returns(ListRevisionsResponse) {} diff --git a/proto/locales/locales.proto b/proto/locales/locales.proto index dd28974..7c38f42 100644 --- a/proto/locales/locales.proto +++ b/proto/locales/locales.proto @@ -2,7 +2,7 @@ syntax = "proto3"; import "google/protobuf/empty.proto"; -option go_package = "git.perx.ru/perxis/perxis-go/proto/locales;locales"; +option go_package = "git.perx.ru/perxis/perxis-go/locales;locales"; package content.locales; diff --git a/proto/members/members.proto b/proto/members/members.proto index 430691c..7e3fcd4 100644 --- a/proto/members/members.proto +++ b/proto/members/members.proto @@ -3,7 +3,7 @@ syntax = "proto3"; import "google/protobuf/empty.proto"; import "common/common.proto"; -option go_package = "git.perx.ru/perxis/perxis-go/proto/members;members"; +option go_package = "git.perx.ru/perxis/perxis-go/members;members"; package account.members; diff --git a/proto/organizations/organizations.proto b/proto/organizations/organizations.proto index a8b0399..54f0472 100644 --- a/proto/organizations/organizations.proto +++ b/proto/organizations/organizations.proto @@ -3,7 +3,7 @@ syntax = "proto3"; import "google/protobuf/empty.proto"; import "common/common.proto"; -option go_package = "git.perx.ru/perxis/perxis-go/proto/organizations;organizations"; +option go_package = "git.perx.ru/perxis/perxis-go/organizations;organizations"; package account.organizations; diff --git a/proto/references/references.proto b/proto/references/references.proto index a56d45f..2cf54e1 100644 --- a/proto/references/references.proto +++ b/proto/references/references.proto @@ -2,7 +2,7 @@ syntax = "proto3"; import "items/items.proto"; -option go_package = "git.perx.ru/perxis/perxis-go/proto/references;references"; +option go_package = "git.perx.ru/perxis/perxis-go/references;references"; package content.references; @@ -10,6 +10,7 @@ package content.references; message Reference { string id = 1; string collection_id = 2; + bool disabled = 3; } message GetRequest { diff --git a/proto/roles/roles.proto b/proto/roles/roles.proto index 04ad46b..e680309 100644 --- a/proto/roles/roles.proto +++ b/proto/roles/roles.proto @@ -3,7 +3,7 @@ syntax = "proto3"; import "google/protobuf/empty.proto"; import "common/common.proto"; -option go_package = "git.perx.ru/perxis/perxis-go/proto/roles;roles"; +option go_package = "git.perx.ru/perxis/perxis-go/roles;roles"; package content.roles; diff --git a/proto/spaces/spaces.proto b/proto/spaces/spaces.proto index 87cbef9..2dd63aa 100644 --- a/proto/spaces/spaces.proto +++ b/proto/spaces/spaces.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -option go_package = "git.perx.ru/perxis/perxis-go/proto/spaces;spaces"; +option go_package = "git.perx.ru/perxis/perxis-go/spaces;spaces"; package content.spaces; diff --git a/proto/users/users.proto b/proto/users/users.proto index 94b7543..283c97d 100644 --- a/proto/users/users.proto +++ b/proto/users/users.proto @@ -4,7 +4,7 @@ import "google/protobuf/empty.proto"; import "google/protobuf/wrappers.proto"; import "common/common.proto"; -option go_package = "git.perx.ru/perxis/perxis-go/proto/users;users"; +option go_package = "git.perx.ru/perxis/perxis-go/users;users"; package account.users; diff --git a/proto/versions/account/versions.proto b/proto/versions/account/versions.proto index 1018795..bab5e9e 100644 --- a/proto/versions/account/versions.proto +++ b/proto/versions/account/versions.proto @@ -3,7 +3,7 @@ syntax = "proto3"; import "google/protobuf/empty.proto"; import "common/common.proto"; -option go_package = "git.perx.ru/perxis/perxis-go/proto/versions/account;account"; +option go_package = "git.perx.ru/perxis/perxis-go/versions/account;account"; package account; diff --git a/proto/versions/content/versions.proto b/proto/versions/content/versions.proto index 012eeb1..a3a14d9 100644 --- a/proto/versions/content/versions.proto +++ b/proto/versions/content/versions.proto @@ -3,7 +3,7 @@ syntax = "proto3"; import "google/protobuf/empty.proto"; import "common/common.proto"; -option go_package = "git.perx.ru/perxis/perxis-go/proto/versions/content;content"; +option go_package = "git.perx.ru/perxis/perxis-go/versions/content;content"; package content; -- GitLab