defmodule Ecto.Entity.DB do @spec __using__(any()) :: {:__block__, [], [ {:@, [...], [...]} | {:alias, [...], [...]} | {:def, [...], [...]} | {:import, [...], [...]}, ... ]} defmacro __using__(_) do quote do alias Ecto.Adapters.SQL @doc """ Run RAW SQL queries against database ## Example iex(1)> Ecto.Entity.raw("SELECT current_timestamp") %MyXQL.Result{ columns: ["current_timestamp"], connection_id: 233, last_insert_id: nil, num_rows: 1, rows: [[~N[2023-11-03 20:02:48]]], num_warnings: 0 } """ def raw(query, parameters \\ [], opts \\ []) do SQL.query!(get_repo(), query, parameters, opts) end def disable_foreign_key_checks, do: set_foreign_key_checks(0) def enable_foreign_key_checks, do: set_foreign_key_checks(1) def set_foreign_key_checks(value) do raw("SET FOREIGN_KEY_CHECKS = ?", [value]) end end end end