Packages
mazurka
0.3.18
1.0.8
1.0.7
1.0.6
1.0.5
1.0.4
1.0.3
1.0.2
1.0.1
1.0.0
0.3.39
0.3.38
0.3.37
0.3.36
0.3.35
0.3.34
0.3.33
0.3.32
0.3.31
0.3.30
0.3.29
0.3.28
0.3.27
0.3.26
0.3.25
0.3.24
0.3.23
0.3.22
0.3.21
0.3.20
0.3.19
0.3.18
0.3.17
0.3.16
0.3.15
0.3.14
0.3.13
0.3.12
0.3.11
0.3.10
0.3.9
0.3.8
0.3.7
0.3.6
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.10
0.2.9
0.2.8
0.2.7
0.2.6
0.2.5
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.10
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
hypermedia api toolkit
Current section
71 Versions
Jump to
Current section
71 Versions
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, |