generator client { provider = "prisma-client" output = "../generated/prisma" } datasource db { provider = "postgresql" } model User { id String @id name String email String emailVerified Boolean @default(false) image String? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt sessions Session[] accounts Account[] folders Folder[] dictionaryLookUps DictionaryLookUp[] translationHistories TranslationHistory[] username String? displayUsername String? @@unique([email]) @@map("user") @@unique([username]) } model Session { id String @id expiresAt DateTime token String createdAt DateTime @default(now()) updatedAt DateTime @updatedAt ipAddress String? userAgent String? userId String user User @relation(fields: [userId], references: [id], onDelete: Cascade) @@unique([token]) @@index([userId]) @@map("session") } model Account { id String @id accountId String providerId String userId String user User @relation(fields: [userId], references: [id], onDelete: Cascade) accessToken String? refreshToken String? idToken String? accessTokenExpiresAt DateTime? refreshTokenExpiresAt DateTime? scope String? password String? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt @@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()) text1 String text2 String language1 String language2 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 normalizedText String @default("") @map("normalized_text") queryLang String @map("query_lang") definitionLang String @map("definition_lang") createdAt DateTime @default(now()) @map("created_at") dictionaryItemId Int? @map("dictionary_item_id") user User? @relation(fields: [userId], references: [id]) dictionaryItem DictionaryItem? @relation(fields: [dictionaryItemId], references: [id], onDelete: SetNull) @@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") lookups DictionaryLookUp[] entries DictionaryEntry[] @@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], onDelete: SetNull) @@index([userId]) @@index([createdAt]) @@index([sourceText, targetLanguage]) @@index([translatedText, sourceLanguage, targetLanguage]) @@map("translation_history") }