84 lines
1.8 KiB
Plaintext
84 lines
1.8 KiB
Plaintext
generator kysely {
|
|
provider = "prisma-kysely"
|
|
output = "."
|
|
enumFileName = "enums.ts"
|
|
}
|
|
|
|
datasource db {
|
|
provider = "mysql"
|
|
url = env("DATABASE_URL")
|
|
relationMode = "prisma"
|
|
}
|
|
|
|
enum ProjectTier {
|
|
FREE
|
|
PRO
|
|
}
|
|
|
|
model Project {
|
|
id String @id @db.VarChar(30) // prefix_ + nanoid (16)
|
|
createdAt DateTime @default(now())
|
|
|
|
// A project is tied to a Clerk User or Organization
|
|
organizationId String? @db.VarChar(36) // uuid v4
|
|
userId String? @db.VarChar(36) // uuid v4
|
|
|
|
name String
|
|
tier ProjectTier @default(FREE)
|
|
url String?
|
|
|
|
@@index([organizationId])
|
|
@@index([userId])
|
|
}
|
|
|
|
enum SubscriptionPlan {
|
|
FREE
|
|
STANDARD
|
|
PRO
|
|
}
|
|
|
|
model Customer {
|
|
id String @id @db.VarChar(30) // prefix_ + nanoid (16)
|
|
stripeId String @unique
|
|
subscriptionId String?
|
|
clerkUserId String
|
|
clerkOrganizationId String?
|
|
name String?
|
|
plan SubscriptionPlan?
|
|
paidUntil DateTime?
|
|
endsAt DateTime?
|
|
|
|
@@index([clerkUserId])
|
|
}
|
|
|
|
model ApiKey {
|
|
id String @id @db.VarChar(30) // prefix_ + nanoid (16)
|
|
createdAt DateTime @default(now())
|
|
expiresAt DateTime?
|
|
lastUsed DateTime?
|
|
revokedAt DateTime?
|
|
|
|
projectId String @db.VarChar(30) // prefix_ + nanoid (16)
|
|
clerkUserId String @db.VarChar(36) // uuid v4
|
|
|
|
name String @default("Secret Key")
|
|
key String @unique
|
|
|
|
@@index([projectId])
|
|
}
|
|
|
|
model Ingestion {
|
|
id String @id @db.VarChar(30) // prefix_ + nanoid (16)
|
|
createdAt DateTime @default(now())
|
|
|
|
projectId String @db.VarChar(30) // prefix_ + nanoid (16)
|
|
apiKeyId String @db.VarChar(30) // prefix_ + nanoid (16)
|
|
|
|
schema Json
|
|
hash String @db.VarChar(40) // sha1
|
|
parent String? @db.VarChar(40) // sha1
|
|
origin String @db.VarChar(100)
|
|
|
|
@@index([projectId])
|
|
}
|