cairo/prisma/schema.prisma
Dunemask 1621105cca
All checks were successful
S3 Repo Backup / s3-repo-backup (push) Successful in 23s
Deploy Edge / deploy-edge (push) Successful in 2m38s
[CHORE] Misc Code Updates & Fixes (#2)
Reviewed-on: https://forgejo.dunemask.dev///elysium/cairo/pulls/2
Co-authored-by: Dunemask <dunemask@gmail.com>
Co-committed-by: Dunemask <dunemask@gmail.com>
2024-12-23 00:57:35 +00:00

73 lines
1.6 KiB
Text

generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("CAIRO_POSTGRES_URI")
}
// Models
model Project {
id String @id @default(cuid())
slug String @unique
parentProject String
name String?
users User[]
rolePolicies RolePolicy[]
keyPairs KeyPair[]
}
// User
model User {
id String @id @unique @default(cuid())
username String
email String?
hash String
rolePolicyId String
projectId String
// Relations
rolePolicy RolePolicy @relation(fields: [rolePolicyId], references: [id])
project Project @relation(fields: [projectId], references: [id])
// Unique constraints
@@unique([projectId, username])
@@unique([projectId, email])
}
model RolePolicy {
id String @id @default(cuid())
projectId String
authority String
authorityType AuthorityType @default(RolePolicy)
name String
policies String[]
// Relations
users User[]
project Project @relation(fields: [projectId], references: [id])
}
model KeyPair {
id String @id @default(cuid())
projectId String
usage KeyPairType // Application Level Uniqueness for non-custom usages. For example, there can only be 1 UserToken Keypair
name String?
encryptedPrivateKey String
encryptedPublicKey String
// Relations
project Project @relation(fields: [projectId], references: [id])
}
enum AuthorityType {
Root
User
RolePolicy
}
enum KeyPairType {
UserToken
Custom
}