diff --git a/proto/clients/clients.proto b/proto/clients/clients.proto index c20c5d4cab1d94fa740458747c01ac0af52f66eb..2720536a47be88a21d8021dbbbc23c536019208a 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 263fc8b2058fbde39bc27fcfd1ab844f1c96a822..8964249050477ed4c58d17c443c592f269ac5677 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 aafd0704118988dbfed484b6720ee271d3230727..e1ae9b1db9dbcd3f076ea5d4003c252303b7a90f 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 60a918a78edde0584408543f191e3a8fc4ffded3..309772802dcee1c73344f803370f887bc0041916 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 a3543e61624a8c1b9efef4cc3ba725b0c9c90270..abfd148d3fae7bd1f964ef7206a657e9d2625e82 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 d12caccc84168bf39852697f6b0fe50129708ba2..93a173b9720e0985f706dfc0842febb45fb4b77e 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 fa91d9ef45fd72d048fc23ed20881bfbf6dd7d2a..4a2d57fb3f1f8cc01fce80935a773dca752fff84 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 0def40164a520bc46acaf6440608a803944bd937..8b0e289d757273f30d6e0166b78dad5c5f2c647f 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 ff3cf8ca7e67a2cf102c901fdbf8900d8cf20ed9..4c00d4983308c3034549d76041cb248f76d95542 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 b58c473680bc45b6f8ed2e0c74adcf1c36f5c96b..f22da2ac8a839f8838bf783fe4a72638cd2d07be 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 c7be5b0145ceb7dbae9982fcb17335403ba4c665..539c1890722349c7422a60dda234771e7427498a 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 190eace6cf9d094d72a185044018b393fdc48ed0..c02ab82760f373428b1d8c1363ea2b88c477d4bb 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 dd28974ca61552e1211ef67bcc4f4b7437fee158..7c38f42b5fb65b1cf39ee15fe873d63d63800bb7 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 430691c382ab20d200687a2fd3a6acbebe2634fd..7e3fcd43404eea80ceae8935adc25879b2850e34 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 a8b039983db55915698248e141f402ba8dac53e3..54f047238d189f5ac6a38c14333b2316162bfcdb 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 a56d45f9ade1cca2f793affd21e75b7e56b5d83c..2cf54e1202ce4320ece76d2007b227ccfb3baceb 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 04ad46b59c187b9b3609b582a3a66e9a7143c513..e6803092e0d188544f031d220f15a4ccc449d91c 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 87cbef95d35660369ba9b08f8d3ed858c4080ff6..2dd63aaa9939cff43c486e90c9732057139a85f4 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 94b7543231d5f5c43acf86862e5ca9b8bb67a367..283c97d3ea28bc63ee226f3d5afa36c8f92d6543 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 1018795052b251f3a9467c090ac0262411fefb08..bab5e9ee844b8cb0b8f9415e46dfa598946739bc 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 012eeb1acae3070becda0353653514d704102df1..a3a14d9692712c3f7cf97d7f9ad9c3738e48fed5 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;