ecto_commons

Ecto common validators for Date, Time, URLs, Emails, PostalCodes, Phone Numbers, Luhn checks, etc.

MIT License

Downloads
355.5K
Stars
50
Committers
5

EctoCommons

Ecto common helpers such as validators and formatters.

Installation

The package is available on hex, so it can be installed by adding ecto_commons to your list of dependencies in mix.exs:

def deps do
  [
    {:ecto_commons, "~> 0.3.4"}
  ]
end

Incompatibility Warning

In order to check whether URLs are parseable, this library requires either a recent (>= 1.13.0) of Elixir, or an older (< 26) version of OTP.

Documentation

Documentation is published on HexDocs and can be found at https://hexdocs.pm/ecto_commons.

Summary

The package contains common ecto helpers:

Changeset validators

  • EctoCommons.DateValidator:
    • validate_date(changeset, field, opts): validates an equality (with
      approximation), before or after a given date.
  • EctoCommons.DateTimeValidator
    • validate_datetime(changeset, field, opts): validates an equality (with
      approximation), before or after a given date time.
  • EctoCommons.TimeValidator
    • validate_time(changeset, field, opts): validates an equality (with
      approximation), before or after a given time.
  • EctoCommons.EmailValidator
    • validate_email(changeset, field, opts): validates emails. As there is no
      perfect validation possible, multiple options are available depending
      on your requirements. Can also reject temporary/burner emails.
  • EctoCommons.URLValidator
    • validate_url(changeset, field, opts): validates if an URL is correct. Here
      too, there is no perfection possible. Multiple options are available
      depending on the precision required.
  • EctoCommons.StringValidator
    • validate_has_prefix(changeset, field, opts): validates if a string starts
      with a given prefix. The prefix itself can depend on another field or
      on a dynamic value.
  • EctoCommons.PostalCodeValidator
    • validate_postal_code(changeset, field, opts): validates postal code formatting
      using regular expressions depending on the country. This only ensures the postal
      code "looks ok" but doesn't check it really exists (that will need a complete
      database of all postal codes worldwide).
  • EctoCommons.SocialSecurityValidator
    • validate_social_security(changeset, field, opts): validates social security
      numbers (SSN) depending on the country. This only validates french SSNs for now.
  • EctoCommons.LuhnValidator
    • validate_luhn(changeset, field, opts): validates a string with Luhn's
      algorithm such as credit card numbers and other administrative codes.
  • EctoCommons.PhoneNumberValidator
    • validate_phone_number(changeset, field, opts): validates a phone number
      using libphonenumber.

Changeset helpers

  • EctoCommons.Helpers
    • validate_many(changeset, field, opts): validates multiple fields with the same
      validation function as well as the same options.

Changelog

ecto_commons follows semantic versioning. See CHANGELOG.md for more information.

Development

Use Earthly to run tests against various versions of Elixir and Erlang.

earthly +all

License

MIT. Please see LICENSE for licensing details.

Package Rankings
Top 12.51% on Hex.pm
Badges
Extracted from project README
Build Status Coverage Status Hex Version License