// 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 ReviewDb types that can be serialized to proto using // ProtobufCodec as well as NoteDb and indexed types that are serialized using // JSON. We can always revisit this decision later, particularly when we // eliminate the ReviewDb types; 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 ProtobufCodec. repeated bytes patch_set = 6; // Raw PatchSetApproval proto as produced by ProtobufCodec. 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 ProtobufCodec. repeated bytes change_message = 15; // JSON produced from com.google.gerrit.reviewdb.client.Comment. repeated string published_comment = 16; int64 read_only_until = 17; bool has_read_only_until = 18; } // 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 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; }