Readly
Readly is a simple module that allow you to create readonly datasource module easily. it is inspired by ActiveHash.
Installation
If available in Hex, the package can be installed as:
Add readly to your list of dependencies in
mix.exs:def deps do
[{:readly, "~> 0.0.1"}]end
Ensure readly is started before your application:
def application do
[applications: [:readly]]end
Example
defmodule Gender do
# Use with struct
use Readly, struct: %{id: nil, name: ""}
# First arg is datasource. (id is required)
# Second arg is a function name.(both Atom and String are OK)
readonly %{id: 1, name: "Man"}, "man"
readonly %{id: 2, name: "Woman"}, :woman
readonly %{id: 3, name: "Trans"}, :trans
end
Gender.man # %Gender{id: 1, name: "Man"}
Gender.woman # %Gender{id: 2, name: "Woman"}
Gender.trans # %Gender{id: 3, name: "Trans"}
Gender.all # [%Gender{id: 1, name: "Man"}, %Gender{id: 2, name: "Woman"}, %Gender{id: 3, name: "Trans"}]
Gender.reverse # [%Gender{id: 3, name: "Trans"}, %Gender{id: 2, name: "Woman"}, %Gender{id: 1, name: "Man"}]
Gender.get(1) # %Gender{id: 1, name: "Man"}TODO
- Implement Ecto type