syntax = "proto3"; // this file is called "fruit.proto" // // for autogenpb to work, you must have: // // "Fruit" must exist. you can put anything in it // // and // // "Fruits" MUST EXIST and start exactly this way // It must be "Fruit" + 's' and must match the name of this file: "fruit.proto" package fruit; import "google/protobuf/timestamp.proto"; // Import the well-known type for Timestamp message Apple { // `autogenpb:marshal` string name = 1; // `autogenpb:unique` // generates SortByxxx() and AppendUnique() functions string genus = 2; // `autogenpb:unique` // generates same thing here but SortByGenus() google.protobuf.Timestamp ctime = 3; // when the apple was born } message Pear { string name = 1; // string favorite = 2; // `autogenpb:sort` } // "Fruit" must exist. you can put anything in it message Fruit { // `autogenpb:marshal` string brand = 1; // `autogenpb:unique` `autogenpb:sort` repeated Apple apples = 2; repeated Pear pears = 3; string UPC = 4; // `autogenpb:sort` `autogenpb:unique` string city = 5; // `autogenpb:sort` } // "Fruits" MUST EXIST and start exactly this way // It must be "Fruit" + 's' and must match the name of this file: "fruit.proto" message Fruits { // `autogenpb:marshal` `autogenpb:mutex` string uuid = 1; // `autogenpb:uuid:be926ad9-f07f-484c-adf2-d96eeabf3079` string version = 2; // `autogenpb:version:v0.0.1` repeated Fruit Fruits = 3; // THIS MUST BE "Fruit" and then "Fruit" + "s" // you can add additional things here but the three lines above must conform to the standard above int64 cost = 4; }