EctoKsuid
allows seamless usage of
ksuids with :ecto
in your application.
To get a better idea of what ksuids are, and how they came to be I highly
recommend reading A breif History of the
UUID
[Ksuid] borrows core ideas from the ubiquitous UUID standard, adding time-based ordering and more friendly representation formats.
Additionally, EctoKsuid
allows easy addition of a :prefix
to the ksuid
that are available at runtime. This generates developer friendly ids much like
stripe's object prefixed ids in your elixir application.
"user_2EgT2R97RRNXWXdA3Ov6znVLDCd"
"user_2EgT5YAJ1EMj86IdI8In8Cmfsnj"
"user_2EgT6WuSzOmcF9bZaRdS3X6lEaL"
"user_2EgT7SEl7LaIGIHIQ1gIjB9eVwT"
"user_2EgT8B20KvdsIQznKX6Tuh2RGDe"
Documentation can be found online on HexDocs.
-
Add
:ecto_ksuid
to your list of dependencies inmix.exs
def deps do [ # ... {:ecto_ksuid, "~> 0.3.0"} ] end
-
Install using mix.
mix deps.get
EctoKsuid
is just a custom Ecto.ParameterizedType
and can be used in your
application just like any other Ecto type.
-
Add columns to your database
defmodule MyApp.Repo.Migrations.AddPublicIdToUsers do use Ecto.Migration def change do alter table(:users) do add :public_id, EctoKsuid.column() end end end
-
Add fields to your schema
defmodule MyApp.User do use Ecto.Schema schema "users" do # ... field :public_id, EctoKsuid end end
For more details on how to use this library, check out the guides: