// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: BUSL-1.1

syntax = "proto3";

// This package contains fake resource types, which are useful for working on
// Consul's generic storage APIs.
package hashicorp.consul.internal.demo.v1;

import "pbresource/annotations.proto";

// Cluster scoped resource.
message Executive {
  option (hashicorp.consul.resource.spec) = {scope: SCOPE_CLUSTER};

  string position = 1;
}

// Partition scoped resource
message RecordLabel {
  option (hashicorp.consul.resource.spec) = {scope: SCOPE_PARTITION};

  string name = 1;
  string description = 2;
}

// Namespace scoped resource.
message Artist {
  option (hashicorp.consul.resource.spec) = {scope: SCOPE_NAMESPACE};

  string name = 1;
  string description = 2;
  Genre genre = 3;
  int32 group_members = 4;
}

enum Genre {
  GENRE_UNSPECIFIED = 0;
  GENRE_JAZZ = 1;
  GENRE_FOLK = 2;
  GENRE_POP = 3;
  GENRE_METAL = 4;
  GENRE_PUNK = 5;
  GENRE_BLUES = 6;
  GENRE_R_AND_B = 7;
  GENRE_COUNTRY = 8;
  GENRE_DISCO = 9;
  GENRE_SKA = 10;
  GENRE_HIP_HOP = 11;
  GENRE_INDIE = 12;
}

message Album {
  option (hashicorp.consul.resource.spec) = {scope: SCOPE_NAMESPACE};

  string name = 1;
  int32 year_of_release = 2;
  bool critically_acclaimed = 3;
  repeated string tracks = 4;
}

message Concept {
  option (hashicorp.consul.resource.spec) = {scope: SCOPE_NAMESPACE};
}
