fix(web): unpair soft-archives groups instead of DELETE — same FK abort
Web error log showed unpairAccountAction failing with the same FK violation as group-sync: deleting whatsapp_groups rows that had been used in reminders blew up reminder_targets_group_id_whatsapp_groups_id_fk and aborted the unpair. Switch to UPDATE … SET is_archived=true. The bot's group-sync upsert already flips is_archived back to false on a re-pair (added in the group-sync companion fix in the previous commit), so behaviour is end-to-end equivalent to the old delete + repopulate path without the FK fragility. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
08f2c0fd27
commit
d731390c9d
@ -172,8 +172,16 @@ export async function unpairAccountAction(formData: FormData): Promise<void> {
|
||||
.update(whatsappAccounts)
|
||||
.set({ status: "unpaired", phoneNumber: null })
|
||||
.where(eq(whatsappAccounts.id, accountId));
|
||||
// Wipe synced groups too — they belong to a different WA login now.
|
||||
await db.delete(whatsappGroups).where(eq(whatsappGroups.accountId, accountId));
|
||||
// Soft-archive synced groups instead of DELETEing. Hard delete
|
||||
// failed with "violates foreign key constraint
|
||||
// reminder_targets_group_id_whatsapp_groups_id_fk" whenever any
|
||||
// group had ever been used in a reminder, which aborted the
|
||||
// unpair. Archived groups vanish from the picker; a re-pair flips
|
||||
// them back via the on-conflict upsert in syncGroupsForAccount.
|
||||
await db
|
||||
.update(whatsappGroups)
|
||||
.set({ isArchived: true })
|
||||
.where(eq(whatsappGroups.accountId, accountId));
|
||||
revalidatePath("/accounts");
|
||||
revalidatePath(`/accounts/${accountId}`);
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user