Postgrex.Extension and Ecto.Type for PostgreSQL isn module
Go to file
Martin Frost 06261efb0e Demand Elixir 1.9
Security patches are only available for the last 5 minor branches, so
since we're bumping pretty much everything right now anyway, let's bump
this number as well.

There is definitely syntax in this library now that's newer than 1.0
anyway (`with` was introduced in 1.2, for instance).
2022-05-10 23:08:27 +02:00
config Migrate from Mix.Config to Config 2022-05-10 22:57:21 +02:00
lib Update documentation on config 2022-05-10 22:57:30 +02:00
test Suppress debug log from encode/decode tests 2022-05-10 22:57:30 +02:00
.formatter.exs Add .formatter.exs 2018-01-26 17:55:08 +01:00
.gitignore Ignore emacs *~ temp files 2016-01-10 12:46:28 +01:00
.tool-versions Add .tool-versions file 2022-05-10 22:57:21 +02:00
README.md Update documentation on config 2022-05-10 22:57:30 +02:00
mix.exs Demand Elixir 1.9 2022-05-10 23:08:27 +02:00
mix.lock Update dependencies to modern versions 2022-05-10 22:57:21 +02:00

README.md

ISN

Build Status

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