actualizaciones y logs
This commit is contained in:
		| @ -1,6 +1,7 @@ | |||||||
| defmodule Api.Studies do | defmodule Api.Studies do | ||||||
|   import Ecto.Query |   import Ecto.Query | ||||||
|   alias Api.Repo |   alias Api.Repo | ||||||
|  |   require Logger | ||||||
|  |  | ||||||
|   def studies_sql_query(filters) do |   def studies_sql_query(filters) do | ||||||
|     customfilter = |     customfilter = | ||||||
| @ -9,7 +10,8 @@ defmodule Api.Studies do | |||||||
|         "" -> dynamic([_], true) |         "" -> dynamic([_], true) | ||||||
|         expr -> |         expr -> | ||||||
|           case ExpressionParser.parse(expr) do |           case ExpressionParser.parse(expr) do | ||||||
|             {:ok, ast} -> ExpressionToEcto.to_dynamic(ast) |             {:ok, ast} -> | ||||||
|  |             ExpressionToEcto.to_dynamic(ast) | ||||||
|             {:error, _reason} -> raise "Error al parsear customfilter" |             {:error, _reason} -> raise "Error al parsear customfilter" | ||||||
|           end |           end | ||||||
|       end |       end | ||||||
| @ -18,7 +20,9 @@ defmodule Api.Studies do | |||||||
|     size = filters["size"] || 24 |     size = filters["size"] || 24 | ||||||
|  |  | ||||||
|     filter = filters["filter"] || [] |     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 |     # Construcción de condiciones de filtro dinámicas | ||||||
|     filter_conditions = |     filter_conditions = | ||||||
| @ -91,6 +95,8 @@ defmodule Api.Studies do | |||||||
|         {direction, field} |         {direction, field} | ||||||
|       end) |       end) | ||||||
|  |  | ||||||
|  |     Logger.info("sort_conditions --> #{inspect(sort_conditions)}") | ||||||
|  |  | ||||||
|     combined_filter = |     combined_filter = | ||||||
|       dynamic([q], ^filter_conditions and ^customfilter) |       dynamic([q], ^filter_conditions and ^customfilter) | ||||||
|  |  | ||||||
|  | |||||||
| @ -141,7 +141,7 @@ defmodule Api.EmailToSendContext do | |||||||
|   end |   end | ||||||
|  |  | ||||||
|   def get_next_email() do |   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( |       from( | ||||||
|         e in Emailtosend, |         e in Emailtosend, | ||||||
| @ -161,8 +161,8 @@ defmodule Api.EmailToSendContext do | |||||||
|                 e.hasreport == true and |                 e.hasreport == true and | ||||||
|                 e.sent != true and |                 e.sent != true and | ||||||
|                 e.retries < 10 |                 e.retries < 10 | ||||||
|                ) |                ), | ||||||
|               and e.registered >= ^one_day_ago, |               # and e.registered >= ^one_day_ago, | ||||||
|         limit: 1, |         limit: 1, | ||||||
|         select: %{ |         select: %{ | ||||||
| 	         idemailtosend: e.idemailtosend, | 	         idemailtosend: e.idemailtosend, | ||||||
|  | |||||||
| @ -48,11 +48,20 @@ defmodule ExpressionToEcto do | |||||||
|   end |   end | ||||||
|  |  | ||||||
|   # IN |   # 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) |     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 |   end | ||||||
|  |  | ||||||
|  |  | ||||||
|   defp build_dynamic(other) do |   defp build_dynamic(other) do | ||||||
|     raise "AST no soportado o mal formado: #{inspect(other)}" |     raise "AST no soportado o mal formado: #{inspect(other)}" | ||||||
|   end |   end | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user