66a6659ccd
- Add SMS opt-in fields to clients schema (smsOptIn, smsConsentDate, smsOptOutDate, smsConsentText) - Add channel column to reminderLogs with per-channel idempotency - Create SMS service with Telnyx SDK integration and E.164 validation - Update reminders service to conditionally send SMS to opted-in clients - Add TCPA opt-out text to SMS reminders - Graceful degradation: catch SMS errors without blocking email - Fix: use clients.phone instead of non-existent clients.phoneE164 - Update clients route to expose SMS fields in API - Add telnyx dependency to API package - Create database migration 0028_sms_reminders Co-Authored-By: Paperclip <noreply@paperclip.ing>
13 lines
752 B
SQL
13 lines
752 B
SQL
-- SMS opt-in fields for clients
|
|
ALTER TABLE "clients" ADD COLUMN "sms_opt_in" boolean NOT NULL DEFAULT false;
|
|
ALTER TABLE "clients" ADD COLUMN "sms_consent_date" timestamp;
|
|
ALTER TABLE "clients" ADD COLUMN "sms_opt_out_date" timestamp;
|
|
ALTER TABLE "clients" ADD COLUMN "sms_consent_text" text;
|
|
|
|
-- Add channel column to reminder_logs with default 'email'
|
|
ALTER TABLE "reminder_logs" ADD COLUMN "channel" text NOT NULL DEFAULT 'email';
|
|
|
|
-- Drop the old unique constraint and recreate with channel
|
|
ALTER TABLE "reminder_logs" DROP CONSTRAINT "reminder_logs_appointment_id_reminder_type_unique";
|
|
ALTER TABLE "reminder_logs" ADD CONSTRAINT "reminder_logs_appointment_id_reminder_type_channel_unique" UNIQUE ("appointment_id", "reminder_type", "channel");
|