- Arquitetura corrigida: templates agora pertencem à inbox (WhatsApp),
não à unidade PIX (que é uma config financeira, não de mensagens)
- Migration: troca FK captain_unit_id -> inbox_id (up/down explícito)
- Model: belongs_to :inbox; scope for_inbox
- Controller: escopo via account.inboxes.find(inbox_id)
- Rotas: move de captain/units/:id → inboxes/:id/notification_templates
- Scanner job: joins(:conversation).where(conversations: {inbox_id:})
- UI: página /captain/notifications com seletor de inbox no topo
(chips clicáveis, templates carregam por watch no selectedInboxId)
- i18n PT/EN: novas keys INBOX_LABEL, SELECT_INBOX_HINT, EMPTY
27 lines
1.1 KiB
Ruby
27 lines
1.1 KiB
Ruby
class ChangeNotificationTemplatesToInbox < ActiveRecord::Migration[7.1]
|
|
def up
|
|
remove_index :captain_notification_templates,
|
|
column: %i[captain_unit_id active],
|
|
name: 'idx_notif_templates_unit_active',
|
|
if_exists: true
|
|
remove_column :captain_notification_templates, :captain_unit_id, :bigint
|
|
|
|
add_column :captain_notification_templates, :inbox_id, :bigint
|
|
add_foreign_key :captain_notification_templates, :inboxes, column: :inbox_id
|
|
add_index :captain_notification_templates, %i[inbox_id active],
|
|
name: 'idx_notif_templates_inbox_active'
|
|
end
|
|
|
|
def down
|
|
remove_index :captain_notification_templates,
|
|
name: 'idx_notif_templates_inbox_active',
|
|
if_exists: true
|
|
remove_foreign_key :captain_notification_templates, :inboxes
|
|
remove_column :captain_notification_templates, :inbox_id, :bigint
|
|
|
|
add_column :captain_notification_templates, :captain_unit_id, :bigint
|
|
add_index :captain_notification_templates, %i[captain_unit_id active],
|
|
name: 'idx_notif_templates_unit_active'
|
|
end
|
|
end
|