syntax = "proto3";

package yandex.cloud.mdb.postgresql.v1;

import "yandex/cloud/validation.proto";

option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/mdb/postgresql/v1;postgresql";
option java_package = "yandex.cloud.api.mdb.postgresql.v1";

// A PostgreSQL Database resource. For more information, see 
// the [Developer's Guide](/docs/managed-postgresql/concepts).
message Database {
  // Name of the database.
  string name = 1;

  // ID of the PostgreSQL cluster that the database belongs to.
  string cluster_id = 2;

  // Name of the user assigned as the owner of the database.
  string owner = 3;

  // POSIX locale for string sorting order.
  // Can only be set at creation time.
  string lc_collate = 4;

  // POSIX locale for character classification.
  // Can only be set at creation time.
  string lc_ctype = 5;

  // PostgreSQL extensions enabled for the database.
  repeated Extension extensions = 6;
}

message Extension {
  // Name of the extension, e.g. `pg_trgm` or `pg_btree`.
  // Extensions supported by Managed Service for PostgreSQL are [listed in the Developer's Guide](/docs/managed-postgresql/operations/cluster-extensions).
  string name = 1;

  // Version of the extension.
  string version = 2;
}

message DatabaseSpec {
  // Name of the PostgreSQL database. 1-63 characters long.
  string name = 1 [(required) = true, (length) = "<=63", (pattern) = "[a-zA-Z0-9_-]*"];

  // Name of the user to be assigned as the owner of the database.
  // To get the list of available PostgreSQL users, make a [UserService.List] request.
  string owner = 2 [(required) = true, (length) = "<=63", (pattern) = "[a-zA-Z0-9_]*"];

  // POSIX locale for string sorting order.
  // Can only be set at creation time.
  string lc_collate = 3 [(pattern) = "|[a-zA-Z_]+.UTF-8|C"];

  // POSIX locale for character classification.
  // Can only be set at creation time.
  string lc_ctype = 4 [(pattern) = "|[a-zA-Z_]+.UTF-8|C"];

  // PostgreSQL extensions to be enabled for the database.
  repeated Extension extensions = 5;
}
