actualizaciones y logs

This commit is contained in:
aime.rolandi 2025-06-05 15:38:03 -03:00
parent 64560ac7e9
commit 7722dbad00
3 changed files with 22 additions and 7 deletions

View File

@ -1,6 +1,7 @@
defmodule Api.Studies do
import Ecto.Query
alias Api.Repo
require Logger
def studies_sql_query(filters) do
customfilter =
@ -9,7 +10,8 @@ defmodule Api.Studies do
"" -> dynamic([_], true)
expr ->
case ExpressionParser.parse(expr) do
{:ok, ast} -> ExpressionToEcto.to_dynamic(ast)
{:ok, ast} ->
ExpressionToEcto.to_dynamic(ast)
{:error, _reason} -> raise "Error al parsear customfilter"
end
end
@ -18,7 +20,9 @@ defmodule Api.Studies do
size = filters["size"] || 24
filter = filters["filter"] || []
sort = filters["sort"] || [%{"dir" => "desc", "field" => "studydate"}]
sort = filters["sort"] || [%{"dir" => "desc", "field" => "idstudy"}]
Logger.info("sort -> #{inspect(sort)}")
# Construcción de condiciones de filtro dinámicas
filter_conditions =
@ -91,6 +95,8 @@ defmodule Api.Studies do
{direction, field}
end)
Logger.info("sort_conditions --> #{inspect(sort_conditions)}")
combined_filter =
dynamic([q], ^filter_conditions and ^customfilter)

View File

@ -141,7 +141,7 @@ defmodule Api.EmailToSendContext do
end
def get_next_email() do
one_day_ago = NaiveDateTime.utc_now() |> NaiveDateTime.add(-86400, :second)
# one_day_ago = NaiveDateTime.utc_now() |> NaiveDateTime.add(-86400, :second)
from(
e in Emailtosend,
@ -161,8 +161,8 @@ defmodule Api.EmailToSendContext do
e.hasreport == true and
e.sent != true and
e.retries < 10
)
and e.registered >= ^one_day_ago,
),
# and e.registered >= ^one_day_ago,
limit: 1,
select: %{
idemailtosend: e.idemailtosend,

View File

@ -48,11 +48,20 @@ defmodule ExpressionToEcto do
end
# IN
defp build_dynamic({:comparison, [{:field, field}, :in, {:list, vals}]}) do
defp build_dynamic({:comparison, [{:field, field}, :in, {:list, vals}]}) when is_list(vals) do
field_atom = String.to_atom(field)
dynamic([q], field(q, ^field_atom) in ^vals)
parsed_vals =
Enum.map(vals, fn
{:string, val} -> val
{:number, val} -> val
other -> raise "Tipo de dato no soportado en IN: #{inspect(other)}"
end)
dynamic([q], field(q, ^field_atom) in ^parsed_vals)
end
defp build_dynamic(other) do
raise "AST no soportado o mal formado: #{inspect(other)}"
end