Skip to content

Commit 00d5cf3

Browse files
committed
fixes
1 parent 81ff694 commit 00d5cf3

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

Sources/StructuredQueriesCore/Documentation.docc/Articles/QueryCookbook.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -477,11 +477,15 @@ RemindersList
477477
.select {
478478
Row.Columns(
479479
remindersList: $0,
480-
milestones: #sql("\($1.jsonGroupArray(filter: $1.id.isNot(nil))"),
481-
reminders: #sql("\($2.jsonGroupArray(filter: $2.id.isNot(nil))")
480+
milestones: #sql("\($1.jsonGroupArray(isDistinct: true, filter: $1.id.isNot(nil))"),
481+
reminders: #sql("\($2.jsonGroupArray(isDistinct: true, filter: $2.id.isNot(nil))")
482482
)
483483
}
484484
```
485485
486+
> Note: Because we are now joining two independent tables to `RemindersList`, we will get duplicate
487+
> entries for all pairs of reminders with milestones. To remove those duplicates we use the
488+
> `isDistinct` option for `jsonGroupArray`.
489+
486490
This will now load all reminders lists with all of their reminders and milestones in one single
487491
SQL query.

Tests/StructuredQueriesTests/JSONFunctionsTests.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -214,9 +214,9 @@ extension SnapshotTests {
214214
assertQuery(
215215
RemindersList
216216
.group(by: \.id)
217-
.leftJoin(Reminder.incomplete) { $0.id.eq($1.remindersListID) }
218217
.leftJoin(Milestone.all) { $0.id.eq($2.remindersListID) }
219-
.select { remindersList, reminder, milestone in
218+
.leftJoin(Reminder.incomplete) { $0.id.eq($1.remindersListID) }
219+
.select { remindersList, milestone, reminder in
220220
RemindersListRow.Columns(
221221
remindersList: remindersList,
222222
milestones: #sql(

0 commit comments

Comments
 (0)