Packages
phoenix_kit
1.7.89
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/v44.ex
defmodule PhoenixKit.Migrations.Postgres.V44 do
@moduledoc """
PhoenixKit V44 Migration: Rename DB Sync tables to Sync
This migration renames the DB Sync tables and indexes to match the
module rename from DBSync to Sync.
## Changes
### Table Renames
- `phoenix_kit_db_sync_connections` → `phoenix_kit_sync_connections`
- `phoenix_kit_db_sync_transfers` → `phoenix_kit_sync_transfers`
### Index Renames
All indexes are renamed to match the new table names.
### Setting Key Renames
- `db_sync_enabled` → `sync_enabled`
- `db_sync_incoming_mode` → `sync_incoming_mode`
- `db_sync_incoming_password` → `sync_incoming_password`
## Backwards Compatibility
This is a breaking change for existing installations. The migration
handles the rename automatically, but any raw SQL queries referencing
the old table names will need to be updated.
"""
use Ecto.Migration
@old_connections_table "phoenix_kit_db_sync_connections"
@new_connections_table "phoenix_kit_sync_connections"
@old_transfers_table "phoenix_kit_db_sync_transfers"
@new_transfers_table "phoenix_kit_sync_transfers"
@doc """
Run the V44 migration to rename Sync tables.
"""
def up(%{prefix: prefix} = _opts) do
prefix_str = if prefix, do: "#{prefix}.", else: ""
# ===========================================
# 1. RENAME CONNECTIONS TABLE
# ===========================================
# Check if old table exists and new doesn't (idempotent)
execute """
DO $$
BEGIN
IF EXISTS (SELECT 1 FROM information_schema.tables
WHERE table_schema = COALESCE('#{prefix}', 'public')
AND table_name = '#{@old_connections_table}')
AND NOT EXISTS (SELECT 1 FROM information_schema.tables
WHERE table_schema = COALESCE('#{prefix}', 'public')
AND table_name = '#{@new_connections_table}') THEN
ALTER TABLE #{prefix_str}#{@old_connections_table}
RENAME TO #{@new_connections_table};
END IF;
END $$;
"""
# Rename connections indexes
rename_index_if_exists(
"phoenix_kit_db_sync_connections_site_direction_uidx",
"phoenix_kit_sync_connections_site_direction_uidx",
prefix
)
rename_index_if_exists(
"phoenix_kit_db_sync_connections_status_idx",
"phoenix_kit_sync_connections_status_idx",
prefix
)
rename_index_if_exists(
"phoenix_kit_db_sync_connections_direction_idx",
"phoenix_kit_sync_connections_direction_idx",
prefix
)
rename_index_if_exists(
"phoenix_kit_db_sync_connections_expires_at_idx",
"phoenix_kit_sync_connections_expires_at_idx",
prefix
)
# ===========================================
# 2. RENAME TRANSFERS TABLE
# ===========================================
execute """
DO $$
BEGIN
IF EXISTS (SELECT 1 FROM information_schema.tables
WHERE table_schema = COALESCE('#{prefix}', 'public')
AND table_name = '#{@old_transfers_table}')
AND NOT EXISTS (SELECT 1 FROM information_schema.tables
WHERE table_schema = COALESCE('#{prefix}', 'public')
AND table_name = '#{@new_transfers_table}') THEN
ALTER TABLE #{prefix_str}#{@old_transfers_table}
RENAME TO #{@new_transfers_table};
END IF;
END $$;
"""
# Rename transfers indexes
rename_index_if_exists(
"phoenix_kit_db_sync_transfers_direction_idx",
"phoenix_kit_sync_transfers_direction_idx",
prefix
)
rename_index_if_exists(
"phoenix_kit_db_sync_transfers_connection_id_idx",
"phoenix_kit_sync_transfers_connection_id_idx",
prefix
)
rename_index_if_exists(
"phoenix_kit_db_sync_transfers_status_idx",
"phoenix_kit_sync_transfers_status_idx",
prefix
)
rename_index_if_exists(
"phoenix_kit_db_sync_transfers_initiated_by_idx",
"phoenix_kit_sync_transfers_initiated_by_idx",
prefix
)
rename_index_if_exists(
"phoenix_kit_db_sync_transfers_inserted_at_idx",
"phoenix_kit_sync_transfers_inserted_at_idx",
prefix
)
rename_index_if_exists(
"phoenix_kit_db_sync_transfers_approval_idx",
"phoenix_kit_sync_transfers_approval_idx",
prefix
)
# ===========================================
# 3. UPDATE TABLE COMMENTS (only if tables exist)
# ===========================================
execute """
DO $$
BEGIN
IF EXISTS (SELECT 1 FROM information_schema.tables
WHERE table_schema = COALESCE('#{prefix}', 'public')
AND table_name = '#{@new_connections_table}') THEN
COMMENT ON TABLE #{prefix_str}#{@new_connections_table} IS
'Permanent connections between PhoenixKit instances for data sync';
END IF;
END $$;
"""
execute """
DO $$
BEGIN
IF EXISTS (SELECT 1 FROM information_schema.tables
WHERE table_schema = COALESCE('#{prefix}', 'public')
AND table_name = '#{@new_transfers_table}') THEN
COMMENT ON TABLE #{prefix_str}#{@new_transfers_table} IS
'Track all data transfers (uploads and downloads) with approval workflow';
END IF;
END $$;
"""
# ===========================================
# 4. RENAME SETTINGS KEYS
# ===========================================
rename_setting_key("db_sync_enabled", "sync_enabled", prefix)
rename_setting_key("db_sync_incoming_mode", "sync_incoming_mode", prefix)
rename_setting_key("db_sync_incoming_password", "sync_incoming_password", prefix)
# Update version
execute "COMMENT ON TABLE #{prefix_str}phoenix_kit IS '44'"
end
@doc """
Rollback the V44 migration (rename back to old names).
"""
def down(%{prefix: prefix} = _opts) do
prefix_str = if prefix, do: "#{prefix}.", else: ""
# Rename transfers table back
execute """
DO $$
BEGIN
IF EXISTS (SELECT 1 FROM information_schema.tables
WHERE table_schema = COALESCE('#{prefix}', 'public')
AND table_name = '#{@new_transfers_table}')
AND NOT EXISTS (SELECT 1 FROM information_schema.tables
WHERE table_schema = COALESCE('#{prefix}', 'public')
AND table_name = '#{@old_transfers_table}') THEN
ALTER TABLE #{prefix_str}#{@new_transfers_table}
RENAME TO #{@old_transfers_table};
END IF;
END $$;
"""
# Rename transfers indexes back
rename_index_if_exists(
"phoenix_kit_sync_transfers_approval_idx",
"phoenix_kit_db_sync_transfers_approval_idx",
prefix
)
rename_index_if_exists(
"phoenix_kit_sync_transfers_inserted_at_idx",
"phoenix_kit_db_sync_transfers_inserted_at_idx",
prefix
)
rename_index_if_exists(
"phoenix_kit_sync_transfers_initiated_by_idx",
"phoenix_kit_db_sync_transfers_initiated_by_idx",
prefix
)
rename_index_if_exists(
"phoenix_kit_sync_transfers_status_idx",
"phoenix_kit_db_sync_transfers_status_idx",
prefix
)
rename_index_if_exists(
"phoenix_kit_sync_transfers_connection_id_idx",
"phoenix_kit_db_sync_transfers_connection_id_idx",
prefix
)
rename_index_if_exists(
"phoenix_kit_sync_transfers_direction_idx",
"phoenix_kit_db_sync_transfers_direction_idx",
prefix
)
# Rename connections table back
execute """
DO $$
BEGIN
IF EXISTS (SELECT 1 FROM information_schema.tables
WHERE table_schema = COALESCE('#{prefix}', 'public')
AND table_name = '#{@new_connections_table}')
AND NOT EXISTS (SELECT 1 FROM information_schema.tables
WHERE table_schema = COALESCE('#{prefix}', 'public')
AND table_name = '#{@old_connections_table}') THEN
ALTER TABLE #{prefix_str}#{@new_connections_table}
RENAME TO #{@old_connections_table};
END IF;
END $$;
"""
# Rename connections indexes back
rename_index_if_exists(
"phoenix_kit_sync_connections_expires_at_idx",
"phoenix_kit_db_sync_connections_expires_at_idx",
prefix
)
rename_index_if_exists(
"phoenix_kit_sync_connections_direction_idx",
"phoenix_kit_db_sync_connections_direction_idx",
prefix
)
rename_index_if_exists(
"phoenix_kit_sync_connections_status_idx",
"phoenix_kit_db_sync_connections_status_idx",
prefix
)
rename_index_if_exists(
"phoenix_kit_sync_connections_site_direction_uidx",
"phoenix_kit_db_sync_connections_site_direction_uidx",
prefix
)
# Rename settings keys back
rename_setting_key("sync_enabled", "db_sync_enabled", prefix)
rename_setting_key("sync_incoming_mode", "db_sync_incoming_mode", prefix)
rename_setting_key("sync_incoming_password", "db_sync_incoming_password", prefix)
# Update version back
execute "COMMENT ON TABLE #{prefix_str}phoenix_kit IS '43'"
end
# Helper to rename setting key if it exists
defp rename_setting_key(old_key, new_key, prefix) do
prefix_str = if prefix, do: "#{prefix}.", else: ""
execute """
UPDATE #{prefix_str}phoenix_kit_settings
SET key = '#{new_key}'
WHERE key = '#{old_key}'
AND NOT EXISTS (
SELECT 1 FROM #{prefix_str}phoenix_kit_settings WHERE key = '#{new_key}'
);
"""
end
# Helper to rename index if it exists
defp rename_index_if_exists(old_name, new_name, prefix) do
schema = if prefix, do: prefix, else: "public"
execute """
DO $$
BEGIN
IF EXISTS (SELECT 1 FROM pg_indexes
WHERE schemaname = '#{schema}'
AND indexname = '#{old_name}') THEN
ALTER INDEX #{if prefix, do: "#{prefix}.", else: ""}#{old_name}
RENAME TO #{new_name};
END IF;
END $$;
"""
end
end