github.com/stackb/rules_proto@v0.0.0-20240221195024-5428336c51f1/example/golden/testdata/scala/lib/WithSnapshot.scala (about) 1 package lib 2 3 import proto.Complete 4 5 /** 6 * An interface intended for extending ScalaPB generated case classes, but may 7 * be used more generically. 8 * 9 * @tparam Message The type used for either snapshot messages or updates. 10 * @tparam A The class to which this interface is being added. 11 */ 12 trait WithSnapshot[Message, A] { 13 def withMessage(message: Message): A 14 15 def withComplete(complete: Complete): A 16 17 def getMessage: Message 18 19 def getComplete: Complete 20 21 final def toEither(isComplete: PartialFunction[WithSnapshot[_, _], Boolean]): Either[Message, Complete] = 22 if (isComplete.lift(this).contains(true)) { 23 Right(getComplete) 24 } else { 25 Left(getMessage) 26 } 27 }