/*
 * Copyright 2020 Google LLC
 *
 * 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
 *
 *     https://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 = "proto2";

package com.google.cloud.bigquery.storage.test;

import "google/cloud/bigquery/storage/v1/annotations.proto";
import "google/protobuf/timestamp.proto";

enum TestEnum {
  TestEnum0 = 0;
  TestEnum1 = 1;
}

message AllSupportedTypes {
  optional int32 int32_value = 1;
  optional int64 int64_value = 2;
  optional uint32 uint32_value = 3;
  optional uint64 uint64_value = 4;
  optional float float_value = 5;
  optional double double_value = 6;
  optional bool bool_value = 7;
  optional TestEnum enum_value = 8;
  required string string_value = 9;
}

message InnerType {
  repeated string value = 1;
}

message NestedType {
  repeated InnerType inner_type = 1;
}

message ComplicateType {
  repeated NestedType nested_repeated_type = 1;
  optional InnerType inner_type = 2;
}

message SimpleTypeForDefaultValue {
  optional string foo_with_default = 1;
  optional string bar_without_default = 2;
  optional string date_with_default_to_current = 3;
}

message ContainsRecursive {
  optional RecursiveType field = 1;
}

message RecursiveType {
  optional ContainsRecursive field = 2;
}

message RecursiveTypeTopMessage {
  optional RecursiveTypeTopMessage field = 2;
}

message FooType {
  optional string foo = 1;
}

message UpdatedFooType {
  optional string foo = 1;
  optional string bar = 2;
}

message UpdatedFooType2 {
  optional string foo = 1;
  optional string bar = 2;
  optional string baz = 3;
}

message FooTimestampType {
  optional string foo = 1;
  optional .google.protobuf.Timestamp bar = 2;
}

message DuplicateType {
  optional TestEnum f1 = 1;
  optional TestEnum f2 = 2;
  optional ComplicateType f3 = 3;
  optional ComplicateType f4 = 4;
}

message FlexibleType {
  optional string col_dGVzdC3liJc = 1
  [(.google.cloud.bigquery.storage.v1.column_name) = "test-列"];
}

message RepetitionType {
  required bytes a = 1;
  required bytes b = 2;
  required bytes c = 3;
  repeated bytes aa = 4;
  repeated bytes bb = 5;
  repeated bytes cc = 6;
}