2026-07-15 21:06:36 +08:00

68 lines
1.7 KiB
Plaintext

generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "sqlite"
url = env("DATABASE_URL")
}
model NotificationDelivery {
id String @id @default(uuid())
projectCode String
idempotencyKey String
requestHash String
recipientUserId String
businessTitle String
renderedTitle String
content String
actionTitle String
actionUrl String
status String @default("pending")
attemptCount Int @default(0)
maxAttempts Int @default(4)
nextAttemptAt DateTime @default(now())
leaseOwner String?
leaseExpiresAt DateTime?
processQueryKey String?
lastErrorCode String?
lastErrorMessage String?
sentAt DateTime?
readAt DateTime?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@unique([projectCode, idempotencyKey])
@@index([status, nextAttemptAt])
@@index([leaseExpiresAt])
@@index([processQueryKey])
}
model RequestNonce {
id String @id @default(uuid())
projectCode String
nonce String
expiresAt DateTime
createdAt DateTime @default(now())
@@unique([projectCode, nonce])
@@index([expiresAt])
}
model DingtalkLoginTicket {
id String @id @default(uuid())
projectCode String
audience String
ticketHash String @unique
ticketNonce String @unique
authCodeHash String @unique
dingtalkUserId String
redirectPath String
expiresAt DateTime
consumedAt DateTime?
createdAt DateTime @default(now())
@@index([projectCode, audience, expiresAt])
@@index([expiresAt, consumedAt])
}