generator client { provider = "prisma-client-js" } datasource db { provider = "sqlite" url = env("DATABASE_URL") } // A preset script file living somewhere in the folder tree. // folderPath is the full path from the virtual root, e.g. "root/embedded". // Names are unique per folder (files in a directory). // approx = true marks embedded presets that are generated stand-ins rather // than ports of the original's code (the original relies on effects the // script engine cannot run). model Preset { id String @id @default(cuid()) name String author String @default("") description String @default("") content String isBuiltIn Boolean @default(false) approx Boolean @default(false) folderPath String @default("root/user created") // Path to the original Winamp .avs binary in /public (downloadable), if any. originalFile String? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt @@unique([folderPath, name]) } // A folder in the preset tree. The root ("/") and the two top-level areas // "root/embedded" and "root/user created" are structural and protected from // rename/delete; everything below is fully user-manageable. model Folder { id String @id @default(cuid()) path String @unique createdAt DateTime @default(now()) } model Settings { id String @id @default("main") defaultScript String? bandConfig String? beatConfig String? // Version stamp of the embedded preset library; when it changes, the // root/embedded subtree is re-seeded from EMBEDDED_LIBRARY. embeddedSeed String? updatedAt DateTime @updatedAt }