From 154833ce1cb60d21cd4cc59838f58a754f80b8fa Mon Sep 17 00:00:00 2001
From: Andrew Timberlake <andrew@andrewtimberlake.com>
Date: Tue, 27 Aug 2024 13:32:22 +0200
Subject: [PATCH] Fix prefix validation in Ecto type

---
 lib/type_id.ex      | 2 +-
 lib/type_id/ecto.ex | 5 +----
 2 files changed, 2 insertions(+), 5 deletions(-)

diff --git a/lib/type_id.ex b/lib/type_id.ex
index 8661ffc..d3acb0d 100644
--- a/lib/type_id.ex
+++ b/lib/type_id.ex
@@ -263,7 +263,7 @@ defmodule TypeID do
     ArgumentError -> :error
   end
 
-  defp validate_prefix!(prefix) do
+  def validate_prefix!(prefix) do
     cond do
       String.starts_with?(prefix, "_") ->
         invalid_prefix!(prefix, "cannot start with an underscore")
diff --git a/lib/type_id/ecto.ex b/lib/type_id/ecto.ex
index 227ddbb..030b4b0 100644
--- a/lib/type_id/ecto.ex
+++ b/lib/type_id/ecto.ex
@@ -89,10 +89,7 @@ if Code.ensure_loaded?(Ecto.ParameterizedType) do
       prefix = Keyword.get(opts, :prefix)
 
       if primary_key do
-        unless prefix && prefix =~ ~r/^[a-z]{0,63}$/ do
-          raise ArgumentError,
-                "must specify `prefix` using only lowercase letters between 0 and 63 characters long."
-        end
+        TypeID.validate_prefix!(prefix)
       end
 
       unless type in ~w[string binary]a do