if Code.ensure_loaded?(Ecto.Query.API) do defmodule QuackDB.Ecto.Map do @moduledoc """ DuckDB MAP expression helpers for Ecto queries. Natural names are available when importing this module directly. With `use QuackDB.Ecto`, ambiguous names such as `contains/2`, `extract/2`, `values/1`, and `concat/2` are excluded; use the explicit aliases instead. """ @doc "Builds `cardinality(map)`." defmacro cardinality(map) do quote do fragment("cardinality(?)", unquote(map)) end end @doc "Builds `cardinality(map)`." defmacro map_cardinality(map) do quote do fragment("cardinality(?)", unquote(map)) end end @doc "Builds `map_keys(map)`." defmacro keys(map) do quote do fragment("map_keys(?)", unquote(map)) end end @doc "Builds `map_keys(map)`." defmacro map_keys(map) do quote do fragment("map_keys(?)", unquote(map)) end end @doc "Builds `map_values(map)`." defmacro values(map) do quote do fragment("map_values(?)", unquote(map)) end end @doc "Builds `map_values(map)`." defmacro map_values(map) do quote do fragment("map_values(?)", unquote(map)) end end @doc "Builds `map_entries(map)`." defmacro entries(map) do quote do fragment("map_entries(?)", unquote(map)) end end @doc "Builds `map_entries(map)`." defmacro map_entries(map) do quote do fragment("map_entries(?)", unquote(map)) end end @doc "Builds `map_contains(map, key)`." defmacro contains(map, key) do quote do fragment("map_contains(?, ?)", unquote(map), unquote(key)) end end @doc "Builds `map_contains(map, key)`." defmacro contains_map(map, key) do quote do fragment("map_contains(?, ?)", unquote(map), unquote(key)) end end @doc "Builds `map_contains_entry(map, key, value)`." defmacro contains_entry(map, key, value) do quote do fragment("map_contains_entry(?, ?, ?)", unquote(map), unquote(key), unquote(value)) end end @doc "Builds `map_contains_entry(map, key, value)`." defmacro contains_map_entry(map, key, value) do quote do fragment("map_contains_entry(?, ?, ?)", unquote(map), unquote(key), unquote(value)) end end @doc "Builds `map_contains_value(map, value)`." defmacro contains_value(map, value) do quote do fragment("map_contains_value(?, ?)", unquote(map), unquote(value)) end end @doc "Builds `map_contains_value(map, value)`." defmacro contains_map_value(map, value) do quote do fragment("map_contains_value(?, ?)", unquote(map), unquote(value)) end end @doc "Builds `map_extract(map, key)`." defmacro extract(map, key) do quote do fragment("map_extract(?, ?)", unquote(map), unquote(key)) end end @doc "Builds `map_extract(map, key)`." defmacro map_extract(map, key) do quote do fragment("map_extract(?, ?)", unquote(map), unquote(key)) end end @doc "Builds `map_extract_value(map, key)`." defmacro extract_value(map, key) do quote do fragment("map_extract_value(?, ?)", unquote(map), unquote(key)) end end @doc "Builds `map_extract_value(map, key)`." defmacro map_extract_value(map, key) do quote do fragment("map_extract_value(?, ?)", unquote(map), unquote(key)) end end @doc "Builds `map_concat(left, right)`." defmacro concat(left, right) do quote do fragment("map_concat(?, ?)", unquote(left), unquote(right)) end end @doc "Builds `map_concat(left, right)`." defmacro map_concat(left, right) do quote do fragment("map_concat(?, ?)", unquote(left), unquote(right)) end end end end