diff --git a/relate/src/main/scala/com/lucidchart/relate/RowParser.scala b/relate/src/main/scala/com/lucidchart/relate/RowParser.scala index b45a549..a8eea0b 100644 --- a/relate/src/main/scala/com/lucidchart/relate/RowParser.scala +++ b/relate/src/main/scala/com/lucidchart/relate/RowParser.scala @@ -5,10 +5,16 @@ import java.time.Instant import scala.collection.mutable import scala.language.higherKinds -trait RowParser[A] extends (SqlRow => A) { +trait RowParser[A] extends (SqlRow => A) { self => def parse(row: SqlRow): A def apply(row: SqlRow) = parse(row) + + override def andThen[B](g: A => B): RowParser[B] = new RowParser[B] { + def parse(row: SqlRow): B = g(self.parse(row)) + } + + def map[B](f: A => B): RowParser[B] = andThen(f) } object RowParser {