Skip to content

Commit 5683b49

Browse files
author
Guillaume Cauchon
authored
Use UUIDs as primary keys instead of sequential integers (#359)
1 parent 60b1b97 commit 5683b49

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

config/config.exs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,10 @@ config :elixir_boilerplate, ElixirBoilerplateWeb.Endpoint,
1212
pubsub_server: ElixirBoilerplate.PubSub,
1313
render_errors: [view: ElixirBoilerplateWeb.Errors, accepts: ~w(html json)]
1414

15-
config :elixir_boilerplate, ElixirBoilerplate.Repo, start_apps_before_migration: [:ssl]
15+
config :elixir_boilerplate, ElixirBoilerplate.Repo,
16+
migration_primary_key: [type: :binary_id, default: {:fragment, "gen_random_uuid()"}],
17+
migration_timestamps: [type: :utc_datetime_usec],
18+
start_apps_before_migration: [:ssl]
1619

1720
config :elixir_boilerplate, Corsica, allow_headers: :all
1821

lib/elixir_boilerplate/schema.ex

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
defmodule ElixirBoilerplate.Schema do
2+
defmacro __using__(_) do
3+
quote do
4+
use Ecto.Schema
5+
6+
import Ecto.Changeset
7+
8+
alias Ecto.{Schema, UUID}
9+
10+
@primary_key {:id, :binary_id, autogenerate: true}
11+
@foreign_key_type :binary_id
12+
@timestamps_opts [type: :utc_datetime_usec]
13+
end
14+
end
15+
end

0 commit comments

Comments
 (0)