@@ -919,5 +919,66 @@ extension SnapshotTests {
919919 """
920920 }
921921 }
922+
923+ @Test func reusableHelperOnLeftJoinedTable( ) {
924+ assertQuery (
925+ RemindersList
926+ . leftJoin ( Reminder . all) { $0. id. eq ( $1. remindersListID) }
927+ . where { $1. isHighPriority. ifnull ( false ) }
928+ ) {
929+ """
930+ SELECT " remindersLists " . " id " , " remindersLists " . " color " , " remindersLists " . " name " , " reminders " . " id " , " reminders " . " assignedUserID " , " reminders " . " dueDate " , " reminders " . " isCompleted " , " reminders " . " isFlagged " , " reminders " . " notes " , " reminders " . " priority " , " reminders " . " remindersListID " , " reminders " . " title "
931+ FROM " remindersLists "
932+ LEFT JOIN " reminders " ON ( " remindersLists " . " id " = " reminders " . " remindersListID " )
933+ WHERE ifnull(( " reminders " . " priority " = 3), 0)
934+ """
935+ } results: {
936+ """
937+ ┌────────────────────┬────────────────────────────────────────────┐
938+ │ RemindersList( │ Reminder( │
939+ │ id: 1, │ id: 3, │
940+ │ color: 4889071, │ assignedUserID: nil, │
941+ │ name: " Personal " │ dueDate: Date(2001-01-01T00:00:00.000Z), │
942+ │ ) │ isCompleted: false, │
943+ │ │ isFlagged: false, │
944+ │ │ notes: " Ask about diet " , │
945+ │ │ priority: .high, │
946+ │ │ remindersListID: 1, │
947+ │ │ title: " Doctor appointment " │
948+ │ │ ) │
949+ ├────────────────────┼────────────────────────────────────────────┤
950+ │ RemindersList( │ Reminder( │
951+ │ id: 2, │ id: 6, │
952+ │ color: 15567157, │ assignedUserID: nil, │
953+ │ name: " Family " │ dueDate: Date(2001-01-03T00:00:00.000Z), │
954+ │ ) │ isCompleted: false, │
955+ │ │ isFlagged: true, │
956+ │ │ notes: " " , │
957+ │ │ priority: .high, │
958+ │ │ remindersListID: 2, │
959+ │ │ title: " Pick up kids from school " │
960+ │ │ ) │
961+ ├────────────────────┼────────────────────────────────────────────┤
962+ │ RemindersList( │ Reminder( │
963+ │ id: 2, │ id: 8, │
964+ │ color: 15567157, │ assignedUserID: nil, │
965+ │ name: " Family " │ dueDate: Date(2001-01-05T00:00:00.000Z), │
966+ │ ) │ isCompleted: false, │
967+ │ │ isFlagged: false, │
968+ │ │ notes: " " , │
969+ │ │ priority: .high, │
970+ │ │ remindersListID: 2, │
971+ │ │ title: " Take out trash " │
972+ │ │ ) │
973+ └────────────────────┴────────────────────────────────────────────┘
974+ """
975+ }
976+ }
977+ }
978+ }
979+
980+ extension Reminder . TableColumns {
981+ var isHighPriority : some QueryExpression < Bool > {
982+ self . priority == Priority . high
922983 }
923984}
0 commit comments