from(t in Task,
join: tf in TaskFactory,
on: t.task_factory_id == tf.id,
left_join: ts in TaskSkip,
# Expect the `and is_nil(ts.deleted_at)` to not return deleted records. Why are they returned?
on: ts.task_id == t.id and is_nil(ts.deleted_at) and ts.until >= ^start_of_day,
preload: [:task_factory, :task_skips],
where: fragment("? at time zone ?", t.interval_start, ^timezone) <= ^start_of_day,
where: is_nil(t.interval_end) or t.interval_end > ^now,
where: is_nil(t.deleted_at),
where: t.lsid == ^lsid,
where: is_nil(ts.deleted_at)
)
I would expect on to return ones that aren't deleted at.
Yet I get these two results
[
%RecurList.Task{
...
task_skips: [
# Why isnt this being filtered out?
%RecurList.TaskSkip{
...
deleted_at: ~U[2023-11-20 23:07:33Z]
}
]
},
# This is expected
%RecurList.Task{
...,
task_skips: [],
}
]