Files
proto/transaction/v1/transaction.proto

52 lines
1.6 KiB
Protocol Buffer

syntax = "proto3";
package proto.transaction.v1;
import "buf/validate/validate.proto";
import "google/protobuf/timestamp.proto";
message Transaction {
int32 transaction_id = 1;
string description = 2 [(buf.validate.field).string.min_len = 1];
string amount = 3 [(buf.validate.field).string = {pattern: "^-?\\d+(\\.\\d{1,2})?$"}];
string category = 4 [(buf.validate.field).string.min_len = 1];
google.protobuf.Timestamp transaction_date = 5;
google.protobuf.Timestamp created_at = 6;
}
message CreateTransactionRequest {
string description = 1 [(buf.validate.field).string.min_len = 1];
string amount = 2 [(buf.validate.field).string = {pattern: "^-?\\d+(\\.\\d{1,2})?$"}];
string category = 3 [(buf.validate.field).string.min_len = 1];
google.protobuf.Timestamp transaction_date = 4;
}
message CreateTransactionResponse {
Transaction transaction = 1;
}
message ListTransactionsRequest {}
message ListTransactionsResponse {
repeated Transaction transactions = 1;
}
message GetTransactionRequest {
int32 transaction_id = 1 [(buf.validate.field).int32.gt = 0];
}
message GetTransactionResponse {
Transaction transaction = 1;
}
message DeleteTransactionRequest {
int32 transaction_id = 1 [(buf.validate.field).int32.gt = 0];
}
message DeleteTransactionResponse {
bool ok = 1;
}
service TransactionService {
rpc CreateTransaction(CreateTransactionRequest) returns (CreateTransactionResponse) {}
rpc ListTransactions(ListTransactionsRequest) returns (ListTransactionsResponse) {}
rpc GetTransaction(GetTransactionRequest) returns (GetTransactionResponse) {}
rpc DeleteTransaction(DeleteTransactionRequest) returns (DeleteTransactionResponse) {}
}