generator client { provider = "prisma-client" output = "../generated/prisma" } datasource db { provider = "postgresql" } model User { id String @id name String email String @unique emailVerified Boolean @default(false) image String? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt displayUsername String? username String? @unique accounts Account[] dictionaryLookUps DictionaryLookUp[] folders Folder[] sessions Session[] translationHistories TranslationHistory[] @@map("user") } model Session { id String @id expiresAt DateTime token String @unique createdAt DateTime @default(now()) updatedAt DateTime @updatedAt ipAddress String? userAgent String? userId String user User @relation(fields: [userId], references: [id], onDelete: Cascade) @@index([userId]) @@map("session") } model Account { id String @id accountId String providerId String userId String accessToken String? refreshToken String? idToken String? accessTokenExpiresAt DateTime? refreshTokenExpiresAt DateTime? scope String? password String? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt user User @relation(fields: [userId], references: [id], onDelete: Cascade) @@index([userId]) @@map("account") } model Verification { id String @id identifier String value String expiresAt DateTime createdAt DateTime @default(now()) updatedAt DateTime @updatedAt @@index([identifier]) @@map("verification") } model Pair { id Int @id @default(autoincrement()) language1 String language2 String text1 String text2 String ipa1 String? ipa2 String? folderId Int @map("folder_id") createdAt DateTime @default(now()) @map("created_at") updatedAt DateTime @updatedAt @map("updated_at") folder Folder @relation(fields: [folderId], references: [id], onDelete: Cascade) @@unique([folderId, language1, language2, text1, text2]) @@index([folderId]) @@map("pairs") } model Folder { id Int @id @default(autoincrement()) name String userId String @map("user_id") createdAt DateTime @default(now()) @map("created_at") updatedAt DateTime @updatedAt @map("updated_at") user User @relation(fields: [userId], references: [id], onDelete: Cascade) pairs Pair[] @@index([userId]) @@map("folders") } model DictionaryLookUp { id Int @id @default(autoincrement()) userId String? @map("user_id") text String queryLang String @map("query_lang") definitionLang String @map("definition_lang") createdAt DateTime @default(now()) @map("created_at") dictionaryItemId Int? @map("dictionary_item_id") normalizedText String @default("") @map("normalized_text") dictionaryItem DictionaryItem? @relation(fields: [dictionaryItemId], references: [id]) user User? @relation(fields: [userId], references: [id]) @@index([userId]) @@index([createdAt]) @@index([normalizedText]) @@map("dictionary_lookups") } model DictionaryItem { id Int @id @default(autoincrement()) frequency Int @default(1) standardForm String @map("standard_form") queryLang String @map("query_lang") definitionLang String @map("definition_lang") createdAt DateTime @default(now()) @map("created_at") updatedAt DateTime @updatedAt @map("updated_at") entries DictionaryEntry[] lookups DictionaryLookUp[] @@unique([standardForm, queryLang, definitionLang]) @@index([standardForm]) @@index([queryLang, definitionLang]) @@map("dictionary_items") } model DictionaryEntry { id Int @id @default(autoincrement()) itemId Int @map("item_id") ipa String? definition String partOfSpeech String? @map("part_of_speech") example String createdAt DateTime @default(now()) @map("created_at") updatedAt DateTime @updatedAt @map("updated_at") item DictionaryItem @relation(fields: [itemId], references: [id], onDelete: Cascade) @@index([itemId]) @@index([createdAt]) @@map("dictionary_entries") } model TranslationHistory { id Int @id @default(autoincrement()) userId String? @map("user_id") sourceText String @map("source_text") sourceLanguage String @map("source_language") targetLanguage String @map("target_language") translatedText String @map("translated_text") sourceIpa String? @map("source_ipa") targetIpa String? @map("target_ipa") createdAt DateTime @default(now()) @map("created_at") updatedAt DateTime @updatedAt @map("updated_at") user User? @relation(fields: [userId], references: [id]) @@index([userId]) @@index([createdAt]) @@index([sourceText, targetLanguage]) @@index([translatedText, sourceLanguage, targetLanguage]) @@map("translation_history") }