|  | // Copyright (C) 2018 The Android Open Source Project | 
|  | // | 
|  | // Licensed under the Apache License, Version 2.0 (the "License"); | 
|  | // you may not use this file except in compliance with the License. | 
|  | // You may obtain a copy of the License at | 
|  | // | 
|  | // http://www.apache.org/licenses/LICENSE-2.0 | 
|  | // | 
|  | // Unless required by applicable law or agreed to in writing, software | 
|  | // distributed under the License is distributed on an "AS IS" BASIS, | 
|  | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
|  | // See the License for the specific language governing permissions and | 
|  | // limitations under the License. | 
|  |  | 
|  | syntax = "proto3"; | 
|  |  | 
|  | package gerrit.cache; | 
|  |  | 
|  | option java_package = "com.google.gerrit.server.cache.proto"; | 
|  |  | 
|  | // Serialized form of com.google.gerrit.server.change.CHangeKindCacheImpl.Key. | 
|  | // Next ID: 4 | 
|  | message ChangeKindKeyProto { | 
|  | bytes prior = 1; | 
|  | bytes next = 2; | 
|  | string strategy_name = 3; | 
|  | } | 
|  |  | 
|  | // Serialized form of | 
|  | // com.google.gerrit.server.change.MergeabilityCacheImpl.EntryKey. | 
|  | // Next ID: 5 | 
|  | message MergeabilityKeyProto { | 
|  | bytes commit = 1; | 
|  | bytes into = 2; | 
|  | string submit_type = 3; | 
|  | string merge_strategy = 4; | 
|  | } | 
|  |  | 
|  | // Serialized form of com.google.gerrit.extensions.auth.oauth.OAuthToken. | 
|  | // Next ID: 6 | 
|  | message OAuthTokenProto { | 
|  | string token = 1; | 
|  | string secret = 2; | 
|  | string raw = 3; | 
|  | int64 expires_at = 4; | 
|  | string provider_id = 5; | 
|  | } | 
|  |  | 
|  |  | 
|  | // Serialized form of com.google.gerrit.server.notedb.ChangeNotesCache.Key. | 
|  | // Next ID: 4 | 
|  | message ChangeNotesKeyProto { | 
|  | string project = 1; | 
|  | int32 change_id = 2; | 
|  | bytes id = 3; | 
|  | } | 
|  |  | 
|  | // Serialized from of com.google.gerrit.server.notedb.ChangeNotesState. | 
|  | // | 
|  | // Note on embedded protos: this is just for storing in a cache, so some formats | 
|  | // were chosen ease of coding the initial implementation. In particular, where | 
|  | // there already exists another serialization mechanism in Gerrit for | 
|  | // serializing a particular field, we use that rather than defining a new proto | 
|  | // type. This includes types that can be serialized to proto using | 
|  | // ProtoConverters as well as NoteDb and indexed types that are serialized using | 
|  | // JSON. We can always revisit this decision later; it just requires bumping the | 
|  | // cache version. | 
|  | // | 
|  | // Note on nullability: there are a lot of nullable fields in ChangeNotesState | 
|  | // and its dependencies. It's likely we could make some of them non-nullable, | 
|  | // but each one of those would be a potentially significant amount of cleanup, | 
|  | // and there's no guarantee we'd be able to eliminate all of them. (For a less | 
|  | // complex class, it's likely the cleanup would be more feasible.) | 
|  | // | 
|  | // Instead, we just take the tedious yet simple approach of having a "has_foo" | 
|  | // field for each nullable field "foo", indicating whether or not foo is null. | 
|  | // | 
|  | // Next ID: 19 | 
|  | message ChangeNotesStateProto { | 
|  | // Effectively required, even though the corresponding ChangeNotesState field | 
|  | // is optional, since the field is only absent when NoteDb is disabled, in | 
|  | // which case attempting to use the ChangeNotesCache is programmer error. | 
|  | bytes meta_id = 1; | 
|  |  | 
|  | int32 change_id = 2; | 
|  |  | 
|  | // Next ID: 24 | 
|  | message ChangeColumnsProto { | 
|  | string change_key = 1; | 
|  |  | 
|  | int64 created_on = 2; | 
|  |  | 
|  | int64 last_updated_on = 3; | 
|  |  | 
|  | int32 owner = 4; | 
|  |  | 
|  | string branch = 5; | 
|  |  | 
|  | int32 current_patch_set_id = 6; | 
|  | bool has_current_patch_set_id = 7; | 
|  |  | 
|  | string subject = 8; | 
|  |  | 
|  | string topic = 9; | 
|  | bool has_topic = 10; | 
|  |  | 
|  | string original_subject = 11; | 
|  | bool has_original_subject = 12; | 
|  |  | 
|  | string submission_id = 13; | 
|  | bool has_submission_id = 14; | 
|  |  | 
|  | int32 assignee = 15; | 
|  | bool has_assignee = 16; | 
|  |  | 
|  | string status = 17; | 
|  | bool has_status = 18; | 
|  |  | 
|  | bool is_private = 19; | 
|  |  | 
|  | bool work_in_progress = 20; | 
|  |  | 
|  | bool review_started = 21; | 
|  |  | 
|  | int32 revert_of = 22; | 
|  | bool has_revert_of = 23; | 
|  | } | 
|  | // Effectively required, even though the corresponding ChangeNotesState field | 
|  | // is optional, since the field is only absent when NoteDb is disabled, in | 
|  | // which case attempting to use the ChangeNotesCache is programmer error. | 
|  | ChangeColumnsProto columns = 3; | 
|  |  | 
|  | repeated int32 past_assignee = 4; | 
|  |  | 
|  | repeated string hashtag = 5; | 
|  |  | 
|  | // Raw PatchSet proto as produced by PatchSetProtoConverter. | 
|  | repeated bytes patch_set = 6; | 
|  |  | 
|  | // Raw PatchSetApproval proto as produced by PatchSetApprovalProtoConverter. | 
|  | repeated bytes approval = 7; | 
|  |  | 
|  | // Next ID: 4 | 
|  | message ReviewerSetEntryProto { | 
|  | string state = 1; | 
|  | int32 account_id = 2; | 
|  | int64 timestamp = 3; | 
|  | } | 
|  | repeated ReviewerSetEntryProto reviewer = 8; | 
|  |  | 
|  | // Next ID: 4 | 
|  | message ReviewerByEmailSetEntryProto { | 
|  | string state = 1; | 
|  | string address = 2; | 
|  | int64 timestamp = 3; | 
|  | } | 
|  | repeated ReviewerByEmailSetEntryProto reviewer_by_email = 9; | 
|  |  | 
|  | repeated ReviewerSetEntryProto pending_reviewer = 10; | 
|  |  | 
|  | repeated ReviewerByEmailSetEntryProto pending_reviewer_by_email = 11; | 
|  |  | 
|  | repeated int32 past_reviewer = 12; | 
|  |  | 
|  | // Next ID: 5 | 
|  | message ReviewerStatusUpdateProto { | 
|  | int64 date = 1; | 
|  | int32 updated_by = 2; | 
|  | int32 reviewer = 3; | 
|  | string state = 4; | 
|  | } | 
|  | repeated ReviewerStatusUpdateProto reviewer_update = 13; | 
|  |  | 
|  | // JSON produced from | 
|  | // com.google.gerrit.server.index.change.ChangeField.StoredSubmitRecord. | 
|  | repeated string submit_record = 14; | 
|  |  | 
|  | // Raw ChangeMessage proto as produced by ChangeMessageProtoConverter. | 
|  | repeated bytes change_message = 15; | 
|  |  | 
|  | // JSON produced from com.google.gerrit.reviewdb.client.Comment. | 
|  | repeated string published_comment = 16; | 
|  |  | 
|  | reserved 17;  // read_only_until | 
|  | reserved 18;  // has_read_only_until | 
|  | } | 
|  |  | 
|  |  | 
|  | // Serialized form of com.google.gerrit.server.query.change.ConflictKey | 
|  | message ConflictKeyProto { | 
|  | bytes commit = 1; | 
|  | bytes other_commit = 2; | 
|  | string submit_type = 3; | 
|  | bool content_merge = 4; | 
|  | } | 
|  |  | 
|  | // Serialized form of com.google.gerrit.server.query.git.TagSetHolder. | 
|  | // Next ID: 3 | 
|  | message TagSetHolderProto { | 
|  | string project_name = 1; | 
|  |  | 
|  | // Next ID: 4 | 
|  | message TagSetProto { | 
|  | string project_name = 1; | 
|  |  | 
|  | // Next ID: 3 | 
|  | message CachedRefProto { | 
|  | bytes id = 1; | 
|  | int32 flag = 2; | 
|  | } | 
|  | map<string, CachedRefProto> ref = 2; | 
|  |  | 
|  | // Next ID: 3 | 
|  | message TagProto { | 
|  | bytes id = 1; | 
|  | bytes flags = 2; | 
|  | } | 
|  | repeated TagProto tag = 3; | 
|  | } | 
|  | TagSetProto tags = 2; | 
|  | } | 
|  |  | 
|  | // Serialized form of | 
|  | // com.google.gerrit.server.account.externalids.AllExternalIds. | 
|  | // Next ID: 2 | 
|  | message AllExternalIdsProto { | 
|  | // Next ID: 6 | 
|  | message ExternalIdProto { | 
|  | string key = 1; | 
|  | int32 accountId = 2; | 
|  | string email = 3; | 
|  | string password = 4; | 
|  | bytes blobId = 5; | 
|  | } | 
|  | repeated ExternalIdProto external_id = 1; | 
|  | } |