diff --git a/docs/assets/images/project-structure-2.png b/docs/assets/images/project-structure-2.png new file mode 100644 index 0000000..3ae964e Binary files /dev/null and b/docs/assets/images/project-structure-2.png differ diff --git a/docs/assets/images/project-structure.png b/docs/assets/images/project-structure.png new file mode 100644 index 0000000..502a170 Binary files /dev/null and b/docs/assets/images/project-structure.png differ diff --git a/docs/assets/images/protocol-buffers.png b/docs/assets/images/protocol-buffers.png new file mode 100644 index 0000000..bbaa499 Binary files /dev/null and b/docs/assets/images/protocol-buffers.png differ diff --git a/docs/assets/themes/prima.css b/docs/assets/themes/prima.css index a4a4132..c6257a7 100644 --- a/docs/assets/themes/prima.css +++ b/docs/assets/themes/prima.css @@ -261,7 +261,8 @@ body .slides-header { } .column { - flex: 1; + display: flex; + flex-direction: column; } /********************************************* diff --git a/docs/practical_grpc.md b/docs/practical_grpc.md index 3d9cae3..d9b2a49 100644 --- a/docs/practical_grpc.md +++ b/docs/practical_grpc.md @@ -1,5 +1,5 @@ -
Victor Martinez
--- @@ -48,3 +48,124 @@ +--- + +## Ingredients to build a gRPC API + +
+
+
+---
+
+## Project structure
+
+
+
+https://github.com/primait/es-policy-grpc
+
+---
+
+## Project structure
+
+
+
+https://github.com/primait/es-policy-grpc
+
+---
+
+## Defining a request
+
+```proto
+syntax = "proto3";
+
+package es_policy_grpc.messages.issue_policy.request.v1;
+
+import "es_policy_grpc/domain/v1/bundle.proto";
+import "es_policy_grpc/domain/v1/coverage.proto";
+import "es_policy_grpc/domain/v1/issuing_company.proto";
+// ... etc
+
+message IssuePolicyRequest {
+ google.protobuf.Timestamp requested_at = 1;
+ google.protobuf.Timestamp start_at = 2;
+ google.protobuf.Timestamp end_at = 3;
+ google.protobuf.Timestamp purchased_at = 4;
+ es_policy_grpc.domain.v1.TransactionInformation transaction = 5;
+ es_policy_grpc.domain.v1.IssuingCompany issuing_company = 6;
+ string quote_id = 7;
+ es_policy_grpc.domain.v1.QuoteSource quote_source = 8;
+ string application_id = 9;
+ string offer_id = 10;
+ es_policy_grpc.domain.v1.Price price = 11;
+ es_policy_grpc.domain.v1.Bundle bundle = 12;
+ repeated es_policy_grpc.domain.v1.ProductCover covers = 13;
+ es_policy_grpc.domain.v1.PolicyHolderInformation policy_holder_information = 14;
+ es_policy_grpc.domain.v1.VehicleInformation vehicle_information = 15;
+ es_policy_grpc.domain.v1.QuoteVersion quote_version = 16;
+}
+```
+
+---
+
+## Defining a request
+
+```proto
+syntax = "proto3";
+
+package es_policy_grpc.domain.v1;
+
+import "es_policy_grpc/domain/v1/price.proto";
+import "google/protobuf/timestamp.proto";
+
+message ProductCover {
+ CoverType cover_type = 1;
+ google.protobuf.Timestamp start_at = 2;
+ google.protobuf.Timestamp end_at = 3;
+ es_policy_grpc.domain.v1.Price price = 4;
+ optional RoadsideAssistanceTier roadside_assistance_tier = 5;
+}
+
+enum CoverType {
+ COVER_TYPE_UNSPECIFIED = 0;
+ COVER_TYPE_MANDATORY_THIRD_PARTY_LIABILITY = 1;
+ COVER_TYPE_VOLUNTARY_THIRD_PARTY_LIABILITY = 2;
+ COVER_TYPE_DRIVER_ACCIDENT = 3;
+ COVER_TYPE_WINDSHIELD = 4;
+ COVER_TYPE_THEFT = 5;
+ // ..etc
+}
+
+enum RoadsideAssistanceTier {
+ ROADSIDE_ASSISTANCE_TIER_UNSPECIFIED = 0;
+ ROADSIDE_ASSISTANCE_TIER_BASE = 1;
+ ROADSIDE_ASSISTANCE_TIER_PREMIUM = 2;
+ ROADSIDE_ASSISTANCE_TIER_PREMIUM_V2 = 3;
+}
+```
+
+---
+
+## Defining a response
+
+```proto
+syntax = "proto3";
+
+package es_policy_grpc.messages.issue_policy.response.v1;
+
+message IssuePolicyResponse {
+ string policy_id = 1;
+}
+```
+
+---
+
+## About backwards compatibility