From 3304ae52cea95286114ea6a89e7186f585345024 Mon Sep 17 00:00:00 2001 From: Kayla Firestack Date: Fri, 31 Jan 2025 09:32:14 -0500 Subject: [PATCH] feat(ex/detours): add `add_author?/2` function and replace `with_author` --- lib/skate/detours/db/detour.ex | 17 ++++++++++++----- lib/skate/detours/detours.ex | 1 - 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/lib/skate/detours/db/detour.ex b/lib/skate/detours/db/detour.ex index ab69c5f16..40a751294 100644 --- a/lib/skate/detours/db/detour.ex +++ b/lib/skate/detours/db/detour.ex @@ -19,7 +19,8 @@ defmodule Skate.Detours.Db.Detour do ## Detour virtual fields # ------------------------------------------------------- - field :status, Ecto.Enum, values: [:draft, :active, :past], virtual: true + field(:status, Ecto.Enum, values: [:draft, :active, :past], virtual: true) :: + simple_status() | nil # Route properties field :route_id, :string, virtual: true @@ -69,6 +70,7 @@ defmodule Skate.Detours.Db.Detour do %{virtual_fields: wanted_virtual_fields, fields: wanted_fields} = split_fields(fields) query + |> add_author?(wanted_fields) |> select_merge(^wanted_fields) |> select_virtual_fields(wanted_virtual_fields) end @@ -106,6 +108,14 @@ defmodule Skate.Detours.Db.Detour do order_by(query, desc: :updated_at) end + defp add_author?(query, fields) do + if Keyword.has_key?(fields, :author) do + with_author(query) + else + query + end + end + @doc """ Joins the `Skate.Settings.Db.User` struct into the `Skate.Detours.Db.Detour` via Ecto preload. @@ -126,9 +136,6 @@ defmodule Skate.Detours.Db.Detour do def select_detour_list_info(query \\ base()) do query - |> preload([ - :author - ]) |> select_fields([ # Table Columns :id, @@ -148,7 +155,7 @@ defmodule Skate.Detours.Db.Detour do :state_value, # Nested Fields - author: [:email] + author: [:email, :id] ]) |> sorted_by_last_updated() end diff --git a/lib/skate/detours/detours.ex b/lib/skate/detours/detours.ex index 6be0f0acb..5825d2419 100644 --- a/lib/skate/detours/detours.ex +++ b/lib/skate/detours/detours.ex @@ -27,7 +27,6 @@ defmodule Skate.Detours.Detours do def list_detours(fields) do Skate.Detours.Db.Detour.Queries.select_fields(fields) - |> Skate.Detours.Db.Detour.Queries.with_author() |> Skate.Detours.Db.Detour.Queries.sorted_by_last_updated() |> Repo.all() end