feat: scope blacklists and paginate phone segments

This commit is contained in:
hectorzhao
2026-07-10 13:42:39 +08:00
parent ff0756ff9c
commit d5e668a2e6
18 changed files with 322 additions and 86 deletions
@@ -0,0 +1,20 @@
ALTER TABLE "EnterpriseBlacklist" ADD COLUMN "applicationId" TEXT;
UPDATE "EnterpriseBlacklist" AS blacklist
SET "applicationId" = (
SELECT "id"
FROM "SmsApplication"
WHERE "tenantId" = blacklist."tenantId"
ORDER BY "createdAt" DESC
LIMIT 1
);
DELETE FROM "EnterpriseBlacklist" WHERE "applicationId" IS NULL;
DROP INDEX IF EXISTS "EnterpriseBlacklist_tenantId_phoneNumber_key";
ALTER TABLE "EnterpriseBlacklist" ALTER COLUMN "applicationId" SET NOT NULL;
CREATE UNIQUE INDEX "EnterpriseBlacklist_applicationId_phoneNumber_key" ON "EnterpriseBlacklist"("applicationId", "phoneNumber");
ALTER TABLE "EnterpriseBlacklist" ADD CONSTRAINT "EnterpriseBlacklist_applicationId_fkey" FOREIGN KEY ("applicationId") REFERENCES "SmsApplication"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
+4 -1
View File
@@ -203,14 +203,16 @@ model SensitiveWord {
model EnterpriseBlacklist {
id String @id @default(cuid())
tenantId String
applicationId String
phoneNumber String
reason String?
status String @default("active")
createdAt DateTime @default(now())
tenant Tenant @relation(fields: [tenantId], references: [id])
application SmsApplication @relation(fields: [applicationId], references: [id])
@@unique([tenantId, phoneNumber])
@@unique([applicationId, phoneNumber])
}
model GlobalBlacklist {
@@ -361,6 +363,7 @@ model SmsApplication {
ipAllowlist SmsApplicationIpAllowlist[]
signatures SmsSignature[]
templates SmsTemplate[]
enterpriseBlacklists EnterpriseBlacklist[]
sendTasks SmsSendTask[]
batchTasks SmsBatchTask[]
messageRecords SmsMessageRecord[]