From 51d5e9a3edacf907efc61331748421f08180f7f4 Mon Sep 17 00:00:00 2001 From: Ahmet Alp Balkan Date: Wed, 27 Jun 2018 13:28:49 -0700 Subject: [PATCH] currencyservice: [WIP] money proto migration Signed-off-by: Ahmet Alp Balkan --- src/currencyservice/client.js | 6 ++---- src/currencyservice/genproto.sh | 0 src/currencyservice/proto/demo.proto | 26 +++++++++++++++----------- 3 files changed, 17 insertions(+), 15 deletions(-) mode change 100644 => 100755 src/currencyservice/genproto.sh diff --git a/src/currencyservice/client.js b/src/currencyservice/client.js index 519e2ad..b2b6298 100644 --- a/src/currencyservice/client.js +++ b/src/currencyservice/client.js @@ -29,10 +29,8 @@ const client = new shopProto.CurrencyService(`localhost:${PORT}`, const request = { from: { currency_code: 'USD', - amount: { - decimal: 300, - fractional: 0 - } + units: 300, + nanos: 500000000 }, to_code: 'CHF' }; diff --git a/src/currencyservice/genproto.sh b/src/currencyservice/genproto.sh old mode 100644 new mode 100755 diff --git a/src/currencyservice/proto/demo.proto b/src/currencyservice/proto/demo.proto index ffd0518..0c3fdf2 100644 --- a/src/currencyservice/proto/demo.proto +++ b/src/currencyservice/proto/demo.proto @@ -63,7 +63,7 @@ message Product { string name = 2; string description = 3; string picture = 4; - MoneyAmount price_usd = 5; + Money price_usd = 5; } message ListProductsResponse { @@ -95,7 +95,7 @@ message GetQuoteRequest { } message GetQuoteResponse { - MoneyAmount cost_usd = 1; + Money cost_usd = 1; } message ShipOrderRequest { @@ -122,18 +122,22 @@ service CurrencyService { rpc Convert(CurrencyConversionRequest) returns (Money) {} } - -// Describes a money amount without currency. For example, decimal=2 and -// fractional=500 (or fractional=5) makes up 2.5 units. -message MoneyAmount { - uint32 decimal = 1; - uint32 fractional = 2; -} - +// Represents an amount of money with its currency type. message Money { // The 3-letter currency code defined in ISO 4217. string currency_code = 1; - MoneyAmount amount = 2; + + // The whole units of the amount. + // For example if `currencyCode` is `"USD"`, then 1 unit is one US dollar. + int64 units = 2; + + // Number of nano (10^-9) units of the amount. + // The value must be between -999,999,999 and +999,999,999 inclusive. + // If `units` is positive, `nanos` must be positive or zero. + // If `units` is zero, `nanos` can be positive, zero, or negative. + // If `units` is negative, `nanos` must be negative or zero. + // For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000. + int32 nanos = 3; } message GetSupportedCurrenciesResponse {