syntax = "proto3";
package provisioner;

service Provisioner {
  rpc ProvisionDatabase(DatabaseRequest) returns (DatabaseResponse);
  rpc DeleteDatabase(DatabaseRequest) returns (DatabaseDeletionResponse);
  rpc HealthCheck(Ping) returns (Pong);
}

message DatabaseRequest {
  string project_name = 1;
  oneof db_type {
    Shared Shared = 10;
    AwsRds AwsRds = 11;
  };
}

message Shared {
  oneof engine {
    string postgres = 1;
    string mongodb = 50;
  }
}

message AwsRds {
  oneof engine {
    RdsConfig postgres = 1;
    RdsConfig mysql = 2;
    RdsConfig mariadb = 3;
  }
}

message RdsConfig {}

message DatabaseResponse {
  string username = 1;
  string password = 2;
  string database_name = 3;
  string engine = 4;
  string address_private = 5;
  string address_public = 6;
  string port = 7;
}

message DatabaseDeletionResponse {}
message Ping {}
message Pong {}