Recordlocator for Elixir

An Elixir module to encode integers into a short and easy to read string and decode the strings back to the initial numbers

This is the Elixir equivalent to go-recordlocator, php-recordlocator, lua-recordlocator, postgresql-recordlocator and sqlanywhere-recordlocator.

A RecordLocator is an alphanumerical string that represents an integer. This package encodes integers to RecordLocators and decodes RecordLocators back to integers.

A RecordLocator is shorter than the corresponding integer and easier to read and memorize. You can use it to encode autoincrement primary keys from an database into an human-readable representation for your users.

Examples

Both RecordLocators are shorter than their integer equivalent. You can encode more than 33.5 million integers in an 5-char RecordLocator: the largest 5-char RecordLocator, ZZZZZ, represents the integer 33,554,431.

With 6 chars you can encode integers up to more than 1 billion.

Installation

If available in Hex, the package can be installed by adding recordlocator to your list of dependencies in mix.exs:

def deps do
  [
    {:recordlocator, "~> 0.1.0"}
  ]
end

Documentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/recordlocator.

Usage

Encoding integers to recordlocators:

{:ok, rl} = Recordlocator.encode(5325)

rl
# => 78G

Decoding recordlocators back into the integer values:

{:ok, number} = Recordlocator.decode("78G")

number
# => 5325