增加更多join

This commit is contained in:
jilen 2025-07-02 13:54:53 +08:00
parent 48cb1003bb
commit 06850823d7
2 changed files with 15 additions and 4 deletions

View file

@ -105,8 +105,19 @@ object Query {
expandFields[E](e) expandFields[E](e)
} }
inline def leftJoin[E1](inline e1: Query[E1]): Joined[E, E1] = inline def leftJoin[E1](inline e1: Query[E1]): Joined[E, Option[E1]] =
Joined[E, E1](JoinType.LeftJoin, e, 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] = { inline def map[E1](inline f: E => E1): Query[E1] = {
transform(e)(f)(Map.apply) transform(e)(f)(Map.apply)

View file

@ -7,7 +7,7 @@ import minisql.NamingStrategy
import minisql.MirrorContext import minisql.MirrorContext
import minisql.context.mirror.{*, given} import minisql.context.mirror.{*, given}
class QuotedSuite extends munit.FunSuite { class MirrorSqlContextSuite extends munit.FunSuite {
case class Foo(id: Long, name: String) case class Foo(id: Long, name: String)
@ -37,7 +37,7 @@ class QuotedSuite extends munit.FunSuite {
test("LeftJoin") { test("LeftJoin") {
val o = testContext 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) case (f1, f2) => (f1.id, f2.id)
}) })