|
|
||
|---|---|---|
| config | ||
| lib | ||
| test | ||
| .gitignore | ||
| README.md | ||
| mix.exs | ||
| mix.lock | ||
README.md
Isn
Isn adds a Postgrex.Extension and Ecto.Type definitions
for the datatypes defined in the isn PostgreSQL module.
Usage
- Add the package to your Mixfile:
defp deps do
[{:isn, "~> 0.1"}]
end
- Add the isn extension to your database
{:ok, pid} = Postgrex.Connection.start_link(
hostname: "localhost",
database: "isn_test"
)
Postgrex.Connection.query!(pid, "CREATE EXTENSION isn;", [])
- Register the postgrex extension
Postgrex.Connection.start_link(
database: "isn_test",
extensions: [{Isn, {}}])
- Start using all of the
isngoodness in your project.
Examples
Here are a few small snippets for how to use these types in various contexts. I have extracted these snippets from a phoenix project, so if you want to use them in something else, you might have to modify them a bit.
Ecto migrations
defmodule MyApp.Repo.Migrations.CreateBook do
use Ecto.Migration
def change do
create table(:books) do
add :isbn, :isbn13
# other fields
end
end
end
Ecto Models
defmodule MyApp.Book do
use MyApp.Web, :model
schema "books" do
field :isbn, Isn.ISBN13
# other fields
end
end
Defined types
Isn adds the following ecto and corresponding postgrex types:
| Ecto.Type | Postgrex type |
|---|---|
Isn.ISBN |
:isbn |
Isn.ISBN13 |
:isbn13 |
Isn.ISMN |
:ismn |
Isn.ISMN13 |
:ismn13 |
Isn.ISSN |
:issn |
Isn.ISSN13 |
:issn13 |
Isn.EAN13 |
:ean13 |
Isn.UPC |
:upc |