diff --git a/examples/build.sbt b/examples/build.sbt index 4b3bc431..6947eb03 100644 --- a/examples/build.sbt +++ b/examples/build.sbt @@ -8,6 +8,15 @@ libraryDependencies ++= Seq( sangria ) -org.coursera.courier.sbt.CourierPlugin.courierSettings +libraryDependencies ++= Seq( + "io.grpc" % "grpc-netty" % scalapb.compiler.Version.grpcJavaVersion, + "com.thesamet.scalapb" %% "scalapb-runtime-grpc" % scalapb.compiler.Version.scalapbVersion +) sourceDirectories in (Compile, TwirlKeys.compileTemplates) := (unmanagedSourceDirectories in Compile).value + +PB.targets in Compile := Seq( + scalapb.gen() -> (sourceManaged in Compile).value / "proto" +) + +org.coursera.courier.sbt.CourierPlugin.courierSettings diff --git a/examples/src/main/protobuf/User.proto b/examples/src/main/protobuf/User.proto new file mode 100644 index 00000000..10fff87a --- /dev/null +++ b/examples/src/main/protobuf/User.proto @@ -0,0 +1,44 @@ +syntax = "proto2"; + +message FindUserRequest { + oneof find_data { + UserData userData = 1; + UserIdentifier identifier = 11; + } +} + +message CreateUserRequest { + optional UserMetaData userMetaData = 1; +} + +message MultiUserRequest { + repeated FindUserRequest users = 2; + optional int32 page_number = 3; + optional int32 result_per_page = 4; +} + +message UserMetaData { + // Going with optional here for backward compatibilty safety + optional string name = 5; + optional string email = 6; + optional string selfDescription = 7; +} + +message UserIdentifier { + required uint32 id = 1; +} + +message UserData { + required UserIdentifier id = 9; + optional UserMetaData userData = 10; +} + +message UserResponse { + repeated UserData users = 8; +} + +service UserService { + rpc User (FindUserRequest) returns (UserResponse); + rpc Users (MultiUserRequest) returns (UserResponse); + rpc CreateUser (CreateUserRequest) returns (UserResponse); +} diff --git a/project/plugins.sbt b/project/plugins.sbt index a2b573eb..4e543292 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -15,3 +15,7 @@ libraryDependencies += { "org.scala-sbt" % "scripted-plugin" % sbtVersion.value // addSbtPlugin("de.heikoseeberger" % "sbt-header" % "1.5.1") addSbtPlugin("de.heikoseeberger" % "sbt-header" % "1.5.1-2-g8b57b53") + + +addSbtPlugin("com.thesamet" % "sbt-protoc" % "0.99.18") +libraryDependencies += "com.thesamet.scalapb" %% "compilerplugin" % "0.7.1"