syntax = "proto3";

package bff.cluster_management.v1beta2;

import "google/api/field_behavior.proto";
import "google/api/resource.proto";
import "tidb_cloud_open_api/common/v1beta1/engine_type.proto";
import "tidb_cloud_open_api/common/v1beta1/service_plan.proto";
import "tidb_cloud_open_api/common/v1beta1/tag.proto";
import "tidb_cloud_open_api/dedicated/v1beta1/resources.proto";
import "tidb_cloud_open_api/nextgen/v1beta2/tidb.proto";
import "tidb_cloud_open_api/serverless/v1beta1/resources.proto";

option go_package = "bff/cluster_management/v1beta2";

message Tidb {
  option (google.api.resource) = {
    type: "bff/cluster_management/v1beta2/Tidb"
    pattern: "tidbs/{tidb}"
    plural: "tidbs"
    singular: "tidb"
  };

  string name = 1 [
    (google.api.field_behavior) = IDENTIFIER,
    (google.api.field_behavior) = OUTPUT_ONLY
  ];

  string tidb_id = 2;

  tidb_cloud_open_api.common.v1beta1.ServicePlan service_plan = 3;

  tidb_cloud_open_api.common.v1beta1.EngineType engine_type = 4;

  repeated tidb_cloud_open_api.common.v1beta1.Tag tags = 6 [(google.api.field_behavior) = OPTIONAL];

  uint64 organization_id = 7 [(google.api.field_behavior) = OUTPUT_ONLY];

  uint64 project_id = 8 [(google.api.field_behavior) = OUTPUT_ONLY];

  uint64 original_project_id = 9 [(google.api.field_behavior) = OUTPUT_ONLY];

  // The version of RU (Request Unit) calculation used by the TiDB kernel.
  // Only visible in BFF API (Console), not in public OpenAPI.
  int32 ru_version = 10 [(google.api.field_behavior) = OUTPUT_ONLY];

  oneof tidb {
    tidb_cloud_open_api.dedicated.v1beta1.Cluster dedicated_cluster = 11;
    tidb_cloud_open_api.serverless.v1beta1.Cluster starter_instance = 12;
    tidb_cloud_open_api.serverless.v1beta1.Cluster essential_instance = 13;
    tidb_cloud_open_api.nextgen.v1beta2.Tidb premium_instance = 14;
    tidb_cloud_open_api.nextgen.v1beta2.Tidb byoc_instance = 15;
    tidb_cloud_open_api.nextgen.v1beta2.Tidb essential_v2_instance = 16;
    tidb_cloud_open_api.nextgen.v1beta2.Tidb premium_reserved_instance = 17;
  }
}
