View Source ISN
ISN adds a Postgrex.Extension
and Ecto.Type
definitions
for the datatypes defined in the isn
PostgreSQL module.
Usage
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, read_after_writes: true
# other fields
end
end
Installation
Add the package to your Mixfile
defp deps do
[{:isn, "~> 2.0"}]
end
Add the isn extension to your database
mix do isn.gen.migration, ecto.migrate
Add a lib/postgrex_types.ex file with the following content:
Postgrex.Types.define(MyApp.PostgrexTypes, [ISN], [])
Add the following lines in config.exs:
config :my_app, MyApp.Repo,
types: MyApp.PostgrexTypes
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