world_cache.ex 565 B

12345678910111213141516171819202122232425262728293031
  1. defmodule Hello.WorldCache do
  2. use Nebulex.Cache,
  3. otp_app: :hello,
  4. adapter: Nebulex.Adapters.Local
  5. alias Hello.Models.World
  6. alias Hello.Repo
  7. def seed do
  8. if not __MODULE__.has_key?(:seeded) do
  9. World
  10. |> Repo.all()
  11. |> Enum.into([], &{&1.id, &1})
  12. |> __MODULE__.put_all()
  13. __MODULE__.put(:seeded, true)
  14. end
  15. end
  16. def fetch(id) do
  17. case __MODULE__.get(id) do
  18. nil ->
  19. world = Repo.get(World, id)
  20. :ok = __MODULE__.put(id, world)
  21. world
  22. world ->
  23. world
  24. end
  25. end
  26. end