actualizaciones y logs
This commit is contained in:
parent
64560ac7e9
commit
7722dbad00
@ -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)
|
||||
|
||||
|
@ -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,
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user