Ecto types to support MACADDR and Network extensions provided by Postgrex.
Although this is primarily an Ecto library, it has a hard dependency on Postgrex due to the types it is providing.
-
Add
ecto_network
to your list of dependencies inmix.exs
:def deps do [{:ecto_network, "~> 0.4.0"}] end
-
Add Postgrex extensions for MACADDR and/or Network (INET, CIDR) to your Repo config.
For Phoenix, you will want to update your environment-specific config files (
config/dev.exs
,config/test.exs
,config/prod.exs
) and add the extensions to the your Repo config.# Configure your database config :your_app, YourApp.Repo, adapter: Ecto.Adapters.Postgres, extensions: [ {Postgrex.Extensions.MACADDR, nil}, {Postgrex.Extensions.Network, nil} ], username: "", password: "", database: "yourapp_dev", hostname: "localhost", pool_size: 10
-
Create your migrations using the Postgres types as atoms.
def change do create table(:your_table) do add :ip_address, :inet add :mac_address, :macaddr add :network, :cidr end end
-
Use the new types in your Ecto schemas.
schema "your_table" do field :ip_address, EctoNetwork.INET field :mac_address, EctoNetwork.MACADDR field :network, EctoNetwork.CIDR end
EctoNetwork is released under the MIT License. See LICENSE.md for more information.