diff --git a/src/main/scala/minisql/Quoted.scala b/src/main/scala/minisql/Quoted.scala index 265927c..1efc593 100644 --- a/src/main/scala/minisql/Quoted.scala +++ b/src/main/scala/minisql/Quoted.scala @@ -105,8 +105,19 @@ object Query { expandFields[E](e) } - inline def leftJoin[E1](inline e1: Query[E1]): Joined[E, E1] = - Joined[E, E1](JoinType.LeftJoin, e, e1) + inline def leftJoin[E1](inline e1: Query[E1]): Joined[E, Option[E1]] = + Joined[E, Option[E1]](JoinType.LeftJoin, e, e1) + + inline def rightJoin[E1](inline e1: Query[E1]): Joined[Option[E], E1] = + Joined[Option[E], E1](JoinType.RightJoin, e, e1) + + inline def join[E1](inline e1: Query[E1]): Joined[E, E1] = + Joined[E, E1](JoinType.InnerJoin, e, e1) + + inline def fullJoin[E1]( + inline e1: Query[E1] + ): Joined[Option[E], Option[E1]] = + Joined[Option[E], Option[E1]](JoinType.FullJoin, e, e1) inline def map[E1](inline f: E => E1): Query[E1] = { transform(e)(f)(Map.apply) diff --git a/src/test/scala/minisql/context/sql/QuotedSuite.scala b/src/test/scala/minisql/context/sql/MirrorSqlContextSuite.scala similarity index 90% rename from src/test/scala/minisql/context/sql/QuotedSuite.scala rename to src/test/scala/minisql/context/sql/MirrorSqlContextSuite.scala index 467a10c..ff26942 100644 --- a/src/test/scala/minisql/context/sql/QuotedSuite.scala +++ b/src/test/scala/minisql/context/sql/MirrorSqlContextSuite.scala @@ -7,7 +7,7 @@ import minisql.NamingStrategy import minisql.MirrorContext import minisql.context.mirror.{*, given} -class QuotedSuite extends munit.FunSuite { +class MirrorSqlContextSuite extends munit.FunSuite { case class Foo(id: Long, name: String) @@ -37,7 +37,7 @@ class QuotedSuite extends munit.FunSuite { test("LeftJoin") { val o = testContext - .io(Foos.leftJoin(Foos).on((f1, f2) => f1.id == f2.id).map { + .io(Foos.join(Foos).on((f1, f2) => f1.id == f2.id).map { case (f1, f2) => (f1.id, f2.id) })