From 527c0577717540fcb242e1bca0fb1e6d7d7f0ca9 Mon Sep 17 00:00:00 2001 From: Vincent Degove Date: Tue, 9 Jan 2024 16:05:07 +0100 Subject: [PATCH] =?UTF-8?q?=C3=89vite=20les=20requ=C3=AAtes=20N+1=20pour?= =?UTF-8?q?=20la=20zone=20datagouv=20(#3711)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * simple fix * improve comments --- apps/transport/lib/db/dataset.ex | 24 ++++-------------------- 1 file changed, 4 insertions(+), 20 deletions(-) diff --git a/apps/transport/lib/db/dataset.ex b/apps/transport/lib/db/dataset.ex index 4a0dd4c812..6a8026df50 100644 --- a/apps/transport/lib/db/dataset.ex +++ b/apps/transport/lib/db/dataset.ex @@ -975,41 +975,25 @@ defmodule DB.Dataset do defp cast_nation_dataset(changeset, _), do: changeset - @spec get_commune_by_insee(binary()) :: Commune.t() | nil - defp get_commune_by_insee(insee) do - Commune - |> Repo.get_by(insee: insee) - |> case do - nil -> - Logger.warning("Unable to find zone with INSEE #{insee}") - nil - - commune -> - commune - end - end - @spec cast_datagouv_zone(Ecto.Changeset.t(), map(), binary()) :: Ecto.Changeset.t() defp cast_datagouv_zone(changeset, _, nil) do changeset - |> change |> put_assoc(:communes, []) end defp cast_datagouv_zone(changeset, _, "") do changeset - |> change |> put_assoc(:communes, []) end + # We’ll only cast datagouv zone if there is something written in the associated territory name in the backoffice defp cast_datagouv_zone(changeset, %{"zones" => zones_insee}, _associated_territory_name) do communes = - zones_insee - |> Enum.map(&get_commune_by_insee/1) - |> Enum.filter(fn z -> not is_nil(z) end) + Commune + |> where([c], c.insee in ^zones_insee) + |> Repo.all() changeset - |> change |> put_assoc(:communes, communes) end