TypeIDs are a modern, type-safe, globally unique identifier based on the upcoming UUIDv7 standard. They provide a ton of nice properties that make them a great choice as the primary identifiers for your data in a database, APIs, and distributed systems. Read more about TypeIDs in their spec.
The package can be installed from hex by adding typeid_elixir to your list of dependencies in mix.exs:
defdepsdo[{:typeid_elixir,"~> 1.0"}]endThe original TypeID spec is defined here.
TypeID implements the Ecto.ParameterizedType behaviour so you can use
TypeIDs as fields in your Ecto schemas.
defmoduleMyApp.Accounts.UserdouseEcto.Schema@primary_key{:id,TypeID,autogenerate: true,prefix: "acct",type: :uuid}@foreign_key_typeTypeID# ...endTypeIDs can be stored as either :string or :uuid. :string will store
the entire TypeID including the prefix. :uuid stores only the UUID portion
and requires a :uuid or :uuid column.
The type used can be set globally in the application config.
config:typeid_elixir,default_type: :uuid