58 lines
2.2 KiB
SQL
58 lines
2.2 KiB
SQL
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");
|