// Copyright 2019 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

syntax = "proto2";

// Message used in the serialization of [Key] objects.
//
// These are serialized to protocol buffers to match the behavior of the Go
// AppEngine datastore library. This parity is required while Cocoon operates
// with two backends, because the serialized values vended by one backend must
// be deserializable by the other backend.
//
// See also:
//
//  * <https://github.com/golang/appengine/blob/b2f4a3cf3c67576a2ee09e1fe62656a5086ce880/internal/datastore/datastore_v3.proto#L89>
message Path {
    repeated group Element = 1 {
        required string type = 2;
        optional int64 id = 3;
        optional string name = 4;
    }
}

// Message used in the serialization of [Key] objects.
//
// These are serialized to protocol buffers to match the behavior of the Go
// AppEngine datastore library. This parity is required while Cocoon operates
// with two backends, because the serialized values vended by one backend must
// be deserializable by the other backend.
//
// See also:
//
//  * <https://github.com/golang/appengine/blob/b2f4a3cf3c67576a2ee09e1fe62656a5086ce880/internal/datastore/datastore_v3.proto#L97>
message Reference {
    required string app = 13;
    optional string name_space = 20;
    required Path path = 14;
}
