Current section
2 Versions
Jump to
Current section
2 Versions
Compare versions
3
files changed
+18
additions
-14
deletions
| @@ -16,4 +16,4 @@ | |
| 16 16 | {<<"optional">>,false}, |
| 17 17 | {<<"repository">>,<<"hexpm">>}, |
| 18 18 | {<<"requirement">>,<<"~> 1.5">>}]]}. |
| 19 | - {<<"version">>,<<"1.0.0">>}. |
| 19 | + {<<"version">>,<<"1.1.0">>}. |
| @@ -67,12 +67,18 @@ defmodule Artem do | |
| 67 67 | if options[:generate_function] && document.name != nil do |
| 68 68 | name = document.name |> Macro.underscore() |> String.to_atom() |
| 69 69 | |
| 70 | - def unquote(Macro.escape(name))(opts) do |
| 70 | + def unquote(Macro.escape(name))(opts) when is_list(opts) do |
| 71 71 | Artem.run( |
| 72 72 | unquote(Macro.escape(document)), |
| 73 73 | Keyword.merge(opts, operation_name: unquote(Macro.escape(document)).name) |
| 74 74 | ) |
| 75 75 | end |
| 76 | + |
| 77 | + def unquote(Macro.escape(name))(variables \\ %{}, context \\ %{}, opts \\ []) do |
| 78 | + unquote(Macro.escape(name))( |
| 79 | + Keyword.merge([variables: variables, context: context], opts) |
| 80 | + ) |
| 81 | + end |
| 76 82 | end |
| 77 83 | |
| 78 84 | document |
| @@ -223,9 +229,6 @@ defmodule Artem do | |
| 223 229 | @doc """ |
| 224 230 | Run a document against the schema. |
| 225 231 | |
| 226 | - The |
| 227 | - |
| 228 | - |
| 229 232 | ## Examples |
| 230 233 | defmodule SomeTest do |
| 231 234 | use Artem, schema: Your.Schema |
| @@ -236,14 +239,15 @@ defmodule Artem do | |
| 236 239 | } |
| 237 240 | | |
| 238 241 | |
| 239 | - test "runs precompiled query" do |
| 242 | + test "with assigned variables and context" do |
| 240 243 | @query |
| 241 | - |> Artem.assign_variables(%{format: "YYMMDD}) |
| 244 | + |> Artem.assign_variables(%{"format" => "YYMMDD"}) |
| 245 | + |> Artem.assign_context(%{current_user_id: 1}) |
| 242 246 | |> Artem.run() |
| 243 247 | end |
| 244 248 | |
| 245 | - test "with " do |
| 246 | - Artem.run(@query, variables: %{format: "YYMMDD}, context: %{current_user_id: 1}) |
| 249 | + test "with passed in variables and context" do |
| 250 | + Artem.run(@query, variables: %{"format" => "YYMMDD}, context: %{current_user_id: 1}) |
| 247 251 | end |
| 248 252 | end |
| 249 253 | |
| @@ -294,10 +298,10 @@ defmodule Artem do | |
| 294 298 | end |
| 295 299 | end |
| 296 300 | |
| 297 | - defp build_name(%{input: %{definitions: nodes}}) do |
| 298 | - node = List.first(nodes) |
| 299 | - node.name |
| 300 | - end |
| 301 | + defp build_name(%{input: %{definitions: [node]}}), do: node.name |
| 302 | + |
| 303 | + defp build_name(%{input: %{definitions: _nodes}}), |
| 304 | + do: raise(Artem.Error, "Multiple operations are not supported") |
| 301 305 | |
| 302 306 | # For raw string documents, entire pipeline needs to run |
| 303 307 | defp build_pipeline(%Artem.Document{document: document} = doc, options) |
| @@ -6,7 +6,7 @@ defmodule ExGql.MixProject do | |
| 6 6 | def project do |
| 7 7 | [ |
| 8 8 | app: :artem, |
| 9 | - version: "1.0.0", |
| 9 | + version: "1.1.0", |
| 10 10 | elixir: "~> 1.10", |
| 11 11 | elixirc_paths: elixirc_paths(Mix.env()), |
| 12 12 | start_permanent: Mix.env() == :prod, |