actualizaciones y logs
This commit is contained in:
		| @ -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 | ||||
|  | ||||
		Reference in New Issue
	
	Block a user