postgrpc 0.1.2

A JSON-transcoding-ready gRPC server for querying Postgres databases
Documentation
syntax = "proto3";
package transaction.v1;

import "google/protobuf/empty.proto";
import "google/protobuf/struct.proto";
import "google/api/annotations.proto";

service Transaction {
  // Reserves a transaction connection from the pool
  rpc Begin (google.protobuf.Empty) returns (BeginResponse) {
    option (google.api.http) = {
      post: "/transactions"
    };
  }

  // Commits the transaction by transaction ID
  rpc Commit (CommitRequest) returns (google.protobuf.Empty) {
    option (google.api.http) = {
      post: "/transactions/{id}/commit"
    };
  }

  // Query the transaction by ID, streaming rows as they are processed
  rpc Query (TransactionQueryRequest) returns (stream google.protobuf.Struct) {
    option (google.api.http) = {
      post: "/transactions/{id}/query"
    };
  }

  // Rolls back the transaction by transaction ID
  rpc Rollback (RollbackRequest) returns (google.protobuf.Empty) {
    option (google.api.http) = {
      post: "/transactions/{id}/rollback"
    };
  }
}

message BeginResponse {
  string id = 1; // unique transaction ID
}

message CommitRequest {
  string id = 1;
}

message RollbackRequest {
  string id = 1;
}

message TransactionQueryRequest {
  string statement = 1;
  repeated google.protobuf.Value values = 2;
  string id = 3;
}

message TransactionQueryResponse {
  repeated google.protobuf.Struct rows = 1;
}