Packages
phoenix_kit
1.7.208
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/v84.ex
defmodule PhoenixKit.Migrations.Postgres.V84 do
@moduledoc """
V84: Rename mailing tables to newsletters.
The mailing module was renamed to newsletters. V79 was updated to create
`phoenix_kit_newsletters_*` tables, but databases that already ran the old V79
(which created `phoenix_kit_mailing_*` tables) were not migrated.
This migration idempotently renames any remaining `mailing_*` tables to
`newsletters_*`. Safe to run multiple times — uses IF EXISTS guards.
"""
use Ecto.Migration
def up(opts) do
prefix = Map.get(opts, :prefix, "public")
p = prefix_str(prefix)
schema = if prefix == "public", do: "public", else: prefix
rename_if_needed(schema, p, "phoenix_kit_mailing_lists", "phoenix_kit_newsletters_lists")
rename_if_needed(
schema,
p,
"phoenix_kit_mailing_list_members",
"phoenix_kit_newsletters_list_members"
)
rename_if_needed(
schema,
p,
"phoenix_kit_mailing_broadcasts",
"phoenix_kit_newsletters_broadcasts"
)
rename_if_needed(
schema,
p,
"phoenix_kit_mailing_deliveries",
"phoenix_kit_newsletters_deliveries"
)
execute("COMMENT ON TABLE #{p}phoenix_kit IS '84'")
end
def down(opts) do
prefix = Map.get(opts, :prefix, "public")
p = prefix_str(prefix)
schema = if prefix == "public", do: "public", else: prefix
rename_if_needed(
schema,
p,
"phoenix_kit_newsletters_deliveries",
"phoenix_kit_mailing_deliveries"
)
rename_if_needed(
schema,
p,
"phoenix_kit_newsletters_broadcasts",
"phoenix_kit_mailing_broadcasts"
)
rename_if_needed(
schema,
p,
"phoenix_kit_newsletters_list_members",
"phoenix_kit_mailing_list_members"
)
rename_if_needed(schema, p, "phoenix_kit_newsletters_lists", "phoenix_kit_mailing_lists")
execute("COMMENT ON TABLE #{p}phoenix_kit IS '83'")
end
defp rename_if_needed(schema, p, from_table, to_table) do
execute("""
DO $$
BEGIN
IF EXISTS (
SELECT FROM information_schema.tables
WHERE table_schema = '#{schema}' AND table_name = '#{from_table}'
) AND NOT EXISTS (
SELECT FROM information_schema.tables
WHERE table_schema = '#{schema}' AND table_name = '#{to_table}'
) THEN
ALTER TABLE #{p}#{from_table} RENAME TO #{to_table};
END IF;
END $$;
""")
end
defp prefix_str("public"), do: "public."
defp prefix_str(prefix), do: "#{prefix}."
end