Packages
phoenix_kit
1.7.74
1.7.208
1.7.207
1.7.206
1.7.205
1.7.204
1.7.203
1.7.202
1.7.201
1.7.200
1.7.199
1.7.198
1.7.197
1.7.196
1.7.194
1.7.193
1.7.192
1.7.191
1.7.190
1.7.189
1.7.187
1.7.186
1.7.185
1.7.184
1.7.183
1.7.182
1.7.181
1.7.180
1.7.179
1.7.178
1.7.177
1.7.176
1.7.175
1.7.174
1.7.173
1.7.172
1.7.171
1.7.170
1.7.169
1.7.168
1.7.167
1.7.166
1.7.165
1.7.164
1.7.162
1.7.161
1.7.160
1.7.159
1.7.157
1.7.156
1.7.155
1.7.154
1.7.153
1.7.152
1.7.151
1.7.150
1.7.149
1.7.146
1.7.145
1.7.144
1.7.143
1.7.138
1.7.133
1.7.132
1.7.131
1.7.130
1.7.128
1.7.126
1.7.125
1.7.121
1.7.120
1.7.119
1.7.118
1.7.117
1.7.116
1.7.115
1.7.114
1.7.113
1.7.112
1.7.111
1.7.110
1.7.109
1.7.108
1.7.107
1.7.106
1.7.105
1.7.104
1.7.103
1.7.102
1.7.101
1.7.100
1.7.99
1.7.98
1.7.97
1.7.96
1.7.95
1.7.94
1.7.93
1.7.92
1.7.91
1.7.90
1.7.89
1.7.88
1.7.87
1.7.86
1.7.85
1.7.84
1.7.83
1.7.82
1.7.81
1.7.80
1.7.79
1.7.78
1.7.77
1.7.76
1.7.75
1.7.74
1.7.71
1.7.70
1.7.69
1.7.66
1.7.65
1.7.64
1.7.63
1.7.62
1.7.61
1.7.59
1.7.58
1.7.57
1.7.56
1.7.55
1.7.54
1.7.53
1.7.52
1.7.51
1.7.49
1.7.44
1.7.43
1.7.42
1.7.41
1.7.39
1.7.38
1.7.37
1.7.36
1.7.34
1.7.33
1.7.31
1.7.30
1.7.29
1.7.28
1.7.27
1.7.26
1.7.25
1.7.24
1.7.23
1.7.22
1.7.21
1.7.20
1.7.19
1.7.18
1.7.17
1.7.16
1.7.15
1.7.14
1.7.13
1.7.12
1.7.11
1.7.10
1.7.9
1.7.8
1.7.7
1.7.6
1.7.5
1.7.4
1.7.3
1.7.2
1.7.1
1.7.0
1.6.20
1.6.19
1.6.18
1.6.17
1.6.16
1.6.15
1.6.14
1.6.13
1.6.12
1.6.11
1.6.10
1.6.9
1.6.8
1.6.7
1.6.6
1.6.5
1.6.4
1.6.3
1.5.2
1.5.1
1.5.0
1.4.9
1.4.8
1.4.7
1.4.6
1.4.5
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.3.2
1.3.1
1.3.0
1.2.10
1.2.9
1.2.8
1.2.7
1.2.5
1.2.4
1.2.2
1.2.1
1.2.0
1.1.0
1.0.0
A foundation for building Elixir Phoenix apps — SaaS, social networks, ERP systems, marketplaces, and more
Current section
Files
Jump to
Current section
Files
lib/phoenix_kit/migrations/postgres/v64.ex
defmodule PhoenixKit.Migrations.Postgres.V64 do
@moduledoc """
V64: Fix user token check constraint for UUID-only inserts.
The V16 migration added a check constraint `user_id_required_for_non_registration_tokens`
that requires `user_id IS NOT NULL` for non-registration tokens. After the UUID cleanup,
the schema only sets `user_uuid` (not `user_id`), so session token inserts fail.
This migration replaces the constraint to check `user_uuid` instead of `user_id`.
"""
use Ecto.Migration
@old_constraint "user_id_required_for_non_registration_tokens"
@new_constraint "user_uuid_required_for_non_registration_tokens"
def up(%{prefix: prefix} = _opts) do
table_name = prefix_table("phoenix_kit_users_tokens", prefix)
# Drop the old user_id-based constraint
execute("""
ALTER TABLE #{table_name}
DROP CONSTRAINT IF EXISTS #{@old_constraint}
""")
# Add new constraint checking user_uuid instead
execute("""
ALTER TABLE #{table_name}
ADD CONSTRAINT #{@new_constraint}
CHECK (
CASE
WHEN context = 'magic_link_registration' THEN true
ELSE user_uuid IS NOT NULL
END
)
""")
execute("COMMENT ON TABLE #{prefix_table("phoenix_kit", prefix)} IS '64'")
end
def down(%{prefix: prefix} = _opts) do
table_name = prefix_table("phoenix_kit_users_tokens", prefix)
# Drop the new uuid-based constraint
execute("""
ALTER TABLE #{table_name}
DROP CONSTRAINT IF EXISTS #{@new_constraint}
""")
# Restore the old user_id-based constraint
execute("""
ALTER TABLE #{table_name}
ADD CONSTRAINT #{@old_constraint}
CHECK (
CASE
WHEN context = 'magic_link_registration' THEN true
ELSE user_id IS NOT NULL
END
)
""")
execute("COMMENT ON TABLE #{prefix_table("phoenix_kit", prefix)} IS '63'")
end
defp prefix_table(table_name, nil), do: table_name
defp prefix_table(table_name, "public"), do: "public.#{table_name}"
defp prefix_table(table_name, prefix), do: "#{prefix}.#{table_name}"
end