Current section

71 Versions

Jump to

Compare versions

5 files changed
+20 additions
-2 deletions
  @@ -58,4 +58,4 @@
58 58 [{<<"app">>,<<"poison">>},
59 59 {<<"optional">>,false},
60 60 {<<"requirement">>,<<">= 1.4.0">>}]}]}.
61 - {<<"version">>,<<"0.3.17">>}.
61 + {<<"version">>,<<"0.3.18">>}.
  @@ -81,6 +81,11 @@ defmodule Mazurka.Compiler.Etude do
81 81 {%Node.Prop{name: name,
82 82 line: meta[:line]}, acc}
83 83 end
84 + defp handle_node({:etude_dict_load, meta, arguments}, acc) do
85 + {%Node.Dict{function: :load,
86 + arguments: arguments,
87 + line: meta[:line]}, acc}
88 + end
84 89 # atom
85 90 defp handle_node(atom, acc) when is_atom(atom) do
86 91 {atom, acc}
  @@ -51,6 +51,13 @@ defmodule Mazurka.Compiler.Kernel do
51 51 {:etude_prop, [], [name]}
52 52 end
53 53
54 + defmacro load(dict) do
55 + {:etude_dict_load, [], [dict]}
56 + end
57 + defmacro load(dict, keys) do
58 + {:etude_dict_load, [], [dict, keys]}
59 + end
60 +
54 61 defmacro link_to(resource, params \\ nil, query \\ nil, fragment \\ nil) do
55 62 link(__CALLER__, :link_to, resource, params, query, fragment)
56 63 end
  @@ -43,6 +43,8 @@ defmodule Mazurka.Model do
43 43 end
44 44 end
45 45
46 + keys = valid_fields |> Enum.reject(&(&1 == primary_key))
47 +
46 48 quote do
47 49 def get(var!(repo), var!(id), var!(opts)) do
48 50 {:ok, unquote({:%{}, [], [{:__struct__, module} | fields]})}
  @@ -51,6 +53,10 @@ defmodule Mazurka.Model do
51 53 defimpl Etude.Dict, for: unquote(module) do
52 54 use Etude.Dict
53 55
56 + def keys(model, _) do
57 + {:ok, unquote(keys), model}
58 + end
59 +
54 60 def cache_key(%{unquote(primary_key) => id, __meta__: %{repo: repo, opts: opts}}) do
55 61 {repo, unquote(module), to_string(id), :erlang.phash2(opts)}
56 62 end
  @@ -3,7 +3,7 @@ defmodule Mazurka.Mixfile do
3 3
4 4 def project do
5 5 [app: :mazurka,
6 - version: "0.3.17",
6 + version: "0.3.18",
7 7 elixir: "~> 1.0",
8 8 description: "hypermedia api toolkit",
9 9 package: package,