// This is your Prisma schema file, // learn more about it in the docs: https://pris.ly/d/prisma-schema generator client { provider = "prisma-client-js" } datasource db { provider = "sqlite" url = env("DATABASE_URL") } model User { id String @id sessions Session[] username String @unique password_hash String email String @unique settings Setting[] notes String? role String @default("user") token Token[] snapps Snapp[] createdAt DateTime @default(now()) updatedAt DateTime @updatedAt usages Usages[] @@map("users") } model Session { id String @id userId String expiresAt DateTime user User @relation(references: [id], fields: [userId], onDelete: Cascade) @@map("sessions") } model Password_reset { token_hash String @unique userId String expiresAt DateTime @@index(userId) @@map("password_reset") } model Setting { id String @id @unique @default(cuid()) field String value String userId String? user User? @relation(fields: [userId], references: [id], onDelete: Cascade) created DateTime @default(now()) @@index([field]) @@index([field, userId]) @@map("settings") } model Token { key String @id userId String user User @relation(fields: [userId], references: [id], onDelete: Cascade) created DateTime @default(now()) @@map("tokens") } model Vtapicache { id String @id @default(cuid()) created DateTime @default(now()) domain String @unique result String } model Watchlist { id String @id @default(cuid()) created DateTime @default(now()) username String? domain String? allowed Boolean @@map("watchlists") } model Snapp { id String @id @default(cuid()) shortcode String @unique original_url String created DateTime @default(now()) secret String? max_usages Int @default(-1) hit Int @default(0) used Int @default(0) notes String? expiration DateTime? disabled Boolean @default(false) userId String user User @relation(fields: [userId], references: [id], onDelete: Cascade) usages Usages[] @@index(shortcode) @@index([created]) @@index([shortcode, created]) @@map("snapps") } model Usages { id String @id @default(cuid()) timestamp DateTime @default(now()) snappId String snappUserId String language String? user_agent String? referrer String? device String? country String? region String? city String? os String? browser String? cpu String? user User @relation(fields: [snappUserId], references: [id], onDelete: Cascade) snapp Snapp @relation(fields: [snappId], references: [id], onDelete: Cascade) @@map("usages") }