68 lines
1.7 KiB
Plaintext
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])
|
|
}
|