From cfd5e611e34e537d4c60a9020860c20efc97a269 Mon Sep 17 00:00:00 2001 From: Guillaume Cauchon Date: Mon, 31 Jul 2023 09:03:45 -0400 Subject: [PATCH 1/3] Create a schema module to default primary keys to be UUIDs and not sequential integers --- config/config.exs | 4 +++- lib/elixir_boilerplate/schema.ex | 15 +++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 lib/elixir_boilerplate/schema.ex diff --git a/config/config.exs b/config/config.exs index 732a2ac0..6bff72dc 100644 --- a/config/config.exs +++ b/config/config.exs @@ -12,7 +12,9 @@ config :elixir_boilerplate, ElixirBoilerplateWeb.Endpoint, pubsub_server: ElixirBoilerplate.PubSub, render_errors: [view: ElixirBoilerplateWeb.Errors.View, accepts: ~w(html json)] -config :elixir_boilerplate, ElixirBoilerplate.Repo, start_apps_before_migration: [:ssl] +config :elixir_boilerplate, ElixirBoilerplate.Repo, + migration_primary_key: [name: :id, type: :binary_id], + start_apps_before_migration: [:ssl] config :elixir_boilerplate, Corsica, allow_headers: :all diff --git a/lib/elixir_boilerplate/schema.ex b/lib/elixir_boilerplate/schema.ex new file mode 100644 index 00000000..b16f8174 --- /dev/null +++ b/lib/elixir_boilerplate/schema.ex @@ -0,0 +1,15 @@ +defmodule ElixirBoilerplate.Schema do + defmacro __using__(_) do + quote do + use Ecto.Schema + + import Ecto.Changeset + + alias Ecto.{Schema, UUID} + + @primary_key {:id, :binary_id, autogenerate: true} + @foreign_key_type :binary_id + @timestamps_opts [type: :utc_datetime_usec] + end + end +end From eee01d8b09266a76191b298645e84394b6a0ea03 Mon Sep 17 00:00:00 2001 From: Guillaume Cauchon Date: Mon, 31 Jul 2023 09:58:41 -0400 Subject: [PATCH 2/3] Add the migration_timestamp configuration --- config/config.exs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/config/config.exs b/config/config.exs index 6bff72dc..0d497d7e 100644 --- a/config/config.exs +++ b/config/config.exs @@ -13,7 +13,8 @@ config :elixir_boilerplate, ElixirBoilerplateWeb.Endpoint, render_errors: [view: ElixirBoilerplateWeb.Errors.View, accepts: ~w(html json)] config :elixir_boilerplate, ElixirBoilerplate.Repo, - migration_primary_key: [name: :id, type: :binary_id], + migration_primary_key: [type: :binary_id, default: {:fragment, "gen_random_uuid()"}], + migration_timestamps: [type: :utc_datetime], start_apps_before_migration: [:ssl] config :elixir_boilerplate, Corsica, allow_headers: :all From be321a1e6aab3e0c00a1488efaa2e2d1ddda1936 Mon Sep 17 00:00:00 2001 From: Guillaume Cauchon Date: Tue, 1 Aug 2023 08:57:12 -0400 Subject: [PATCH 3/3] :utc_datetime_usec timestamps --- config/config.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/config.exs b/config/config.exs index 0d497d7e..3df05e1d 100644 --- a/config/config.exs +++ b/config/config.exs @@ -14,7 +14,7 @@ config :elixir_boilerplate, ElixirBoilerplateWeb.Endpoint, config :elixir_boilerplate, ElixirBoilerplate.Repo, migration_primary_key: [type: :binary_id, default: {:fragment, "gen_random_uuid()"}], - migration_timestamps: [type: :utc_datetime], + migration_timestamps: [type: :utc_datetime_usec], start_apps_before_migration: [:ssl] config :elixir_boilerplate, Corsica, allow_headers: :all