I want to generate below algebraic data types in scala using scalaPB.
trait MyEventCmd
case class MyEvent(mytype: Int, cp: Option[Double], value: Option[String] = None, id: Option[String] = None) extends MyEventCmd
case object Flush extends MyEventCmd
I've defined below protobuf myevent.proto
-
syntax = "proto3";
message MyEventCmd {
oneof sealed_value {
Flush lit = 1;
MyEvent event = 2;
}
}
message Flush {
}
message MyEvent {
int32 eType = 1;
double cp = 2;
string value = 3;
string id = 4;
}
The problem with my definition is that Flush
is generated as case class
not case object
.
Also, I don't know how to make field optional and with default value.