generator client {
provider = "prisma-client-js"
previewFeatures = ["fullTextSearch","interactiveTransactions","orderByNulls"]
binaryTargets = ["native", "linux-musl", "debian-openssl-1.1.x"]
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
model Organization {
id String @id @default(cuid())
slug String @unique
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
avatarUri String?
displayName String?
websiteUrl String?
ownerId String
visibility ResourceVisibility @default(PRIVATE)
kind OrganizationKind @default(PERSONAL)
owner User @relation("ManyOwnedOrganizationsToOneOwnerUser", fields: [ownerId], references: [id])
memberships OrganizationMembership[] @relation("OneOrganizationMembershipToOneOrganization")
repositories Repository[] @relation("ManyRepositoriesToOneOrganization")
}
model OrganizationMembership {
id String @id @default(cuid())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
expiresAt DateTime?
revokedAt DateTime?
organizationId String
userId String
role OrganizationRole @default(REVIEWER)
organization Organization @relation("OneOrganizationMembershipToOneOrganization", fields: [organizationId], references: [id])
user User @relation("OneOrganizationMembershipToOneUser", fields: [userId], references: [id])
}
model Repository {
id String @id @default(cuid())
slug String @unique
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
avatarUri String?
displayName String?
keywords String[]
shortDescription String?
websiteUrl String?
organizationId String
visibility ResourceVisibility @default(PRIVATE)
forkedFromRepoId String?
isFork Boolean @default(false)
lastPushedAt DateTime?
organization Organization @relation("ManyRepositoriesToOneOrganization", fields: [organizationId], references: [id])
}
model Session {
id String @id @default(cuid())
sessionId String @unique
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
expiresAt DateTime?
data Json?
detectedUserAgent String @default("")
detectedIPAddress String @default("")
}
model User {
id String @id @default(cuid())
role GlobalRole @default(CUSTOMER)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
username String @unique
email String @unique
hashedPassword String
displayName String?
avatarUri String?
organizations Organization[] @relation("ManyOwnedOrganizationsToOneOwnerUser")
organizationMemberships OrganizationMembership[] @relation("OneOrganizationMembershipToOneUser")
}
enum GlobalRole {
GUEST
CUSTOMER
ADMIN
SUPER_ADMIN
}
enum OrganizationKind {
PERSONAL
COMPANY
}
enum OrganizationRole {
REVIEWER
COMITTER
ADMIN
OWNER
}
enum ResourceVisibility {
PUBLIC
UNLISTED
PRIVATE
}