Postgrex.Extension and Ecto.Type for PostgreSQL isn module
Go to file
Martin Frost 684aa1a6e2 Extract build status URLs to make lines shorter 2016-01-09 11:23:23 +01:00
config WIP 2015-05-05 22:15:40 +02:00
lib Some tidying up 2015-10-03 21:45:47 +02:00
test Update dependencies 2015-08-10 22:00:54 +02:00
.gitignore Add earmark dependency. 2015-08-10 22:06:42 +02:00
.travis.yml Add .travis.yml file 2015-10-02 21:45:30 +02:00
README.md Extract build status URLs to make lines shorter 2016-01-09 11:23:23 +01:00
mix.exs Bump dependencies, and version 2016-01-03 22:17:57 +01:00
mix.lock Bump dependencies, and version 2016-01-03 22:17:57 +01: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

  1. Add the package to your Mixfile:
    defp deps do
    [{:isn, "~> 0.1"}]
    end
    
  2. 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;", [])
    
  3. Register the postgrex extension
    Postgrex.Connection.start_link(
    database: "isn_test",
    extensions: [{Isn, {}}])
    
  4. Start using all of the isn goodness 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