فراخوانی چند query در یک query به صورت لیست ecto

درود خدمت دوستان گرامی,
یک صفحه از سایتی که در حال ساخت آن هستم مثل udamy می باشد. به صورت مثال به لینک زیر نگاه کنید

https://www.udemy.com/docker-and-kubernetes-the-complete-guide/

حال روابط جداول خودم رو در اینجا لیست می کنم

course

  • headline
    – chapter
    – work

در عکس زیر بهتر می تونم نمایش بدم

اگر بخوام بهتر توضیح بدم. headline با course رلیشن شده و chapter با headline و work نیز با headline رلیشن شده است.


حالا من چنین سلکتی رو نیاز دارم بسازم

%{
  course_info,
  headlines: %{
    headline_info,
    chapters: %{
      chapter_info
    },
    works: %{
      work_info
    }
  }
}

مشکل اینجاست که work و headline و chapter یک لیست هستند با چندین عنصر در خودشون که باید برند در for لوپ بشند ولی اطلاعات خود این مطلب یا course با یک where به آیدی مطلب می یاد و یک map هست.

حالا سوال اینجا پیش می یاد که من باید چندین درخواست بفرستم به دیتابیس با چند فانکشن. یا راهی هست که با query اینو بنویسم اگر مورد دوم چطور؟

فکر کنم مشکلم با پریلود حل بشه

  def headline_with_course_id(course_id) do
    query = from u in HeadlineSchema,
      where: u.course_id == ^course_id,
      left_join: c in assoc(u, :lms_chapters),
      left_join: j in assoc(u, :lms_works),
      preload: [lms_chapters: c, lms_works: j]
    Repo.all(query)
  end