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 @@ -

A practical guide on gRPC

- +

A practical guide to gRPC with

+rust logo

Victor Martinez

--- @@ -48,3 +48,124 @@ +--- + +## Ingredients to build a gRPC API + +
+ protocol buffers logo + Buf logo +
+Tonic logo + +--- + +## Defining our API + +protocol buffers logo + +--- + +## Project structure + +protocol buffers logo + +https://github.com/primait/es-policy-grpc + +--- + +## Project structure + +protocol buffers logo + +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