Files
metabuilder/dbal/shared/backends/prisma/schema.prisma
2025-12-27 13:30:57 +00:00

133 lines
3.2 KiB
Plaintext

datasource db {
provider = "sqlite"
url = env("DATABASE_URL")
}
generator client {
provider = "prisma-client-js"
}
model User {
id String @id @default(uuid())
username String @unique
email String @unique
role String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
workflows Workflow[]
luaScripts LuaScript[]
installedPackages Package[]
}
model Credential {
id String @id @default(uuid())
username String @unique
passwordHash String
firstLogin Boolean @default(true)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model Session {
id String @id @default(uuid())
userId String
token String @unique
expiresAt DateTime
createdAt DateTime @default(now())
lastActivity DateTime @updatedAt
@@index([userId])
@@index([expiresAt])
}
model PageView {
id String @id @default(uuid())
slug String @unique
title String
description String?
level Int
layout String
isActive Boolean @default(true)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
components ComponentHierarchy[]
@@index([level])
@@index([isActive])
}
model ComponentHierarchy {
id String @id @default(uuid())
pageId String
parentId String?
componentType String
order Int @default(0)
props String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
page PageView @relation(fields: [pageId], references: [id], onDelete: Cascade)
parent ComponentHierarchy? @relation("ParentChild", fields: [parentId], references: [id], onDelete: Cascade)
children ComponentHierarchy[] @relation("ParentChild")
@@index([pageId])
@@index([parentId])
@@index([pageId, order])
}
model Workflow {
id String @id @default(uuid())
name String @unique
description String?
trigger String
triggerConfig String
steps String
isActive Boolean @default(true)
createdBy String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
creator User @relation(fields: [createdBy], references: [id])
@@index([trigger])
@@index([isActive])
}
model LuaScript {
id String @id @default(uuid())
name String @unique
description String?
code String
isSandboxed Boolean @default(true)
allowedGlobals String
timeoutMs Int @default(5000)
createdBy String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
creator User @relation(fields: [createdBy], references: [id])
@@index([isSandboxed])
}
model Package {
id String @id @default(uuid())
name String
version String
description String?
author String
manifest String
isInstalled Boolean @default(false)
installedAt DateTime?
installedBy String?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
installer User? @relation(fields: [installedBy], references: [id])
@@unique([name, version])
@@index([isInstalled])
}