EctoNetwork

Build Status

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.

Installation

  1. Add ecto_network to your list of dependencies in mix.exs:

        def deps do
          [{:ecto_network, "~> 0.5.0"}]
        end
        ```
    
  2. 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
        ```
    
  3. 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
        ```
    
  4. 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
        ```
    

Contributing

I love pull requests! If you fork this project and modify it, please ping me to see if your changes can be incorporated back into this project.

That said, if your feature idea is nontrivial, you should probably open an issue to discuss it before attempting a pull request.

License

EctoNetwork is released under the MIT License. See LICENSE for more information.