Files
snapp/prisma/schema.mysql.prisma
urania-dev 9d37d478b9 v.8
2024-08-07 20:11:29 +02:00

135 lines
2.9 KiB
Plaintext

// 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 = "mysql"
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")
}