CREATE TABLE IF NOT EXISTS "telephony_calls" ( "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, "tenant_id" bigint NOT NULL, "direction" text NOT NULL, "status" text DEFAULT 'ringing' NOT NULL, "local_extension" text, "remote_number" text, "remote_display_name" text, "sip_call_id" text, "started_at" timestamp with time zone DEFAULT now() NOT NULL, "answered_at" timestamp with time zone, "ended_at" timestamp with time zone, "duration_seconds" integer, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone, "created_by" uuid, "updated_by" uuid ); DO $$ BEGIN IF NOT EXISTS ( SELECT 1 FROM pg_constraint WHERE conname = 'telephony_calls_tenant_id_tenants_id_fk' ) THEN ALTER TABLE "telephony_calls" ADD CONSTRAINT "telephony_calls_tenant_id_tenants_id_fk" FOREIGN KEY ("tenant_id") REFERENCES "public"."tenants"("id") ON DELETE cascade ON UPDATE no action; END IF; IF NOT EXISTS ( SELECT 1 FROM pg_constraint WHERE conname = 'telephony_calls_created_by_auth_users_id_fk' ) THEN ALTER TABLE "telephony_calls" ADD CONSTRAINT "telephony_calls_created_by_auth_users_id_fk" FOREIGN KEY ("created_by") REFERENCES "public"."auth_users"("id") ON DELETE no action ON UPDATE no action; END IF; IF NOT EXISTS ( SELECT 1 FROM pg_constraint WHERE conname = 'telephony_calls_updated_by_auth_users_id_fk' ) THEN ALTER TABLE "telephony_calls" ADD CONSTRAINT "telephony_calls_updated_by_auth_users_id_fk" FOREIGN KEY ("updated_by") REFERENCES "public"."auth_users"("id") ON DELETE no action ON UPDATE no action; END IF; END $$; CREATE INDEX IF NOT EXISTS "telephony_calls_tenant_started_idx" ON "telephony_calls" USING btree ("tenant_id", "started_at"); CREATE INDEX IF NOT EXISTS "telephony_calls_created_by_idx" ON "telephony_calls" USING btree ("tenant_id", "created_by"); CREATE INDEX IF NOT EXISTS "telephony_calls_sip_call_idx" ON "telephony_calls" USING btree ("tenant_id", "sip_call_id");