diff options
author | Jacob Vosmaer <jacob@gitlab.com> | 2019-07-05 12:28:16 +0300 |
---|---|---|
committer | Zeger-Jan van de Weg <git@zjvandeweg.nl> | 2019-07-05 12:28:16 +0300 |
commit | b9c9aec5cf53de4ea1a7fc3b067dd56d7828e080 (patch) | |
tree | 2693a49918682c12ea22e4085b8c569ac9e62497 /proto/wiki.proto | |
parent | 873a408c49ef1b34fce0cd47a80aa192f426d7c0 (diff) |
Start preparation for migrating .proto files
Diffstat (limited to 'proto/wiki.proto')
-rw-r--r-- | proto/wiki.proto | 204 |
1 files changed, 204 insertions, 0 deletions
diff --git a/proto/wiki.proto b/proto/wiki.proto new file mode 100644 index 000000000..00f0a9c8f --- /dev/null +++ b/proto/wiki.proto @@ -0,0 +1,204 @@ +syntax = "proto3"; + +import "shared.proto"; + +package gitaly; + +option go_package = "gitlab.com/gitlab-org/gitaly/proto/go/gitalypb"; + +service WikiService { + rpc WikiGetPageVersions(WikiGetPageVersionsRequest) returns (stream WikiGetPageVersionsResponse) { + option (op_type).op = ACCESSOR; + } + rpc WikiWritePage(stream WikiWritePageRequest) returns (WikiWritePageResponse) { + option (op_type) = { + op: MUTATOR + target_repository_field: "1" + }; + } + rpc WikiUpdatePage(stream WikiUpdatePageRequest) returns (WikiUpdatePageResponse) { + option (op_type) = { + op: MUTATOR + target_repository_field: "1" + }; + } + rpc WikiDeletePage(WikiDeletePageRequest) returns (WikiDeletePageResponse) { + option (op_type) = { + op: MUTATOR + target_repository_field: "1" + }; + } + // WikiFindPage returns a stream because the page's raw_data field may be arbitrarily large. + rpc WikiFindPage(WikiFindPageRequest) returns (stream WikiFindPageResponse) { + option (op_type).op = ACCESSOR; + } + rpc WikiFindFile(WikiFindFileRequest) returns (stream WikiFindFileResponse) { + option (op_type).op = ACCESSOR; + } + rpc WikiGetAllPages(WikiGetAllPagesRequest) returns (stream WikiGetAllPagesResponse) { + option (op_type).op = ACCESSOR; + } + rpc WikiListPages(WikiListPagesRequest) returns (stream WikiListPagesResponse) { + option (op_type).op = ACCESSOR; + } + rpc WikiGetFormattedData(WikiGetFormattedDataRequest) returns (stream WikiGetFormattedDataResponse) { + option (op_type).op = ACCESSOR; + } +} + +message WikiCommitDetails { + bytes name = 1; + bytes email = 2; + bytes message = 3; + int32 user_id = 4; + bytes user_name = 5; +} + +message WikiPageVersion { + GitCommit commit = 1; + string format = 2; +} + +message WikiPage { + // These fields are only present in the first message of a WikiPage stream + WikiPageVersion version = 1; + string format = 2; + bytes title = 3; + string url_path = 4; + bytes path = 5; + bytes name = 6; + bool historical = 7; + + // This field is present in all messages of a WikiPage stream + bytes raw_data = 8; +} + +message WikiGetPageVersionsRequest { + Repository repository = 1; + bytes page_path = 2; + + int32 page = 3; + int32 per_page = 4; +} + +message WikiGetPageVersionsResponse { + repeated WikiPageVersion versions = 1; +} + +// This message is sent in a stream because the 'content' field may be large. +message WikiWritePageRequest { + // These following fields are only present in the first message. + Repository repository = 1; + bytes name = 2; + string format = 3; + WikiCommitDetails commit_details = 4; + // This field is present in all messages. + bytes content = 5; +} + +message WikiWritePageResponse { + bytes duplicate_error = 1; +} + +message WikiUpdatePageRequest { + // There fields are only present in the first message of the stream + Repository repository = 1; + bytes page_path = 2; + bytes title = 3; + string format = 4; + WikiCommitDetails commit_details = 5; + + // This field is present in all messages + bytes content = 6; +} + +message WikiUpdatePageResponse { + bytes error = 1; +} + +message WikiDeletePageRequest { + Repository repository = 1; + bytes page_path = 2; + WikiCommitDetails commit_details = 3; +} + +message WikiDeletePageResponse {} + +message WikiFindPageRequest { + Repository repository = 1; + bytes title = 2; + bytes revision = 3; + bytes directory = 4; +} + +// WikiFindPageResponse is a stream because we need multiple WikiPage +// messages to send the raw_data field. +message WikiFindPageResponse { + WikiPage page = 1; +} + +message WikiFindFileRequest { + Repository repository = 1; + bytes name = 2; + // Optional: revision + bytes revision = 3; +} + +message WikiFindFileResponse { + // If 'name' is empty, the file was not found. + bytes name = 1; + string mime_type = 2; + bytes raw_data = 3; + bytes path = 4; +} + +message WikiGetAllPagesRequest { + Repository repository = 1; + // Passing 0 means no limit is applied + uint32 limit = 2; + bool direction_desc = 3; + + enum SortBy { + TITLE = 0; + CREATED_AT = 1; + } + SortBy sort = 4; +} + +// The WikiGetAllPagesResponse stream is a concatenation of WikiPage streams +message WikiGetAllPagesResponse { + WikiPage page = 1; + // When end_of_page is true it signals a change of page for the next Response message (if any) + bool end_of_page = 2; +} + +message WikiGetFormattedDataRequest { + Repository repository = 1; + bytes title = 2; + bytes revision = 3; + bytes directory = 4; +} + +message WikiGetFormattedDataResponse { + bytes data = 1; +} + +message WikiListPagesRequest { + Repository repository = 1; + // Passing 0 means no limit is applied + uint32 limit = 2; + bool direction_desc = 3; + + enum SortBy { + TITLE = 0; + CREATED_AT = 1; + } + SortBy sort = 4; + + uint32 offset = 5; +} + +// The WikiListPagesResponse stream is a concatenation of WikiPage streams without content +message WikiListPagesResponse { + WikiPage page = 1; +} |