enum UserRole { BANNED FROZEN OBSERVER CUSTOMER AGENT USER POWERUSER EDITOR ADMIN MODERATOR SUPERVISOR } model User { id Int @id @default(autoincrement()) locale Lang @default(uk) active Boolean? name String? username String? @unique email String? @unique emailVerified DateTime? @map("email_verified") @db.Timestamp(3) password String? @db.VarChar(384) image String? // sessions Session[] /// [UserExtendedDataType] extendedData Json? @map("extended_data") @db.Json // orders Order[] favorites UserFavouriteProduct[] orders Order[] reviews UserProductReview[] createdAt DateTime @default(now()) @map("created_at") @db.Timestamp(3) updatedAt DateTime? @default(dbgenerated("NULL DEFAULT NULL ON UPDATE current_timestamp(3)")) @map("updated_at") @db.Timestamp(3) account Account[] //authenticator Authenticator[] //session Session[] @@map("users") } // https://stackoverflow.com/questions/72606917/get-custom-attribute-depend-on-pivot-table-in-nest-js-with-prisma-orm model UserFavouriteProduct { id Int @id @default(autoincrement()) status Boolean? informAvailability Boolean? @map("inform_availability") user User @relation(fields: [userId], references: [id]) userId Int @map("user_id") productId Int @map("product_id") createdAt DateTime @default(now()) @map("created_at") @db.Timestamp(3) @@unique([userId, productId]) @@map("user_favourite_products") } // https://stackoverflow.com/questions/67065859/modeling-a-rating-system-in-prisma model UserProductReview { id Int @id @default(autoincrement()) rating Decimal? body String @db.Text productId Int @map("product_id") user User @relation(fields: [userId], references: [id]) userId Int @map("user_id") createdAt DateTime @default(now()) @map("created_at") @db.Timestamp(3) updatedAt DateTime? @default(dbgenerated("NULL DEFAULT NULL ON UPDATE current_timestamp(3)")) @map("updated_at") @db.Timestamp(3) @@unique([userId, productId]) @@map("user_product_reviews") } model Account { id Int @id @default(autoincrement()) userId Int @unique @map("user_id") role UserRole @default(CUSTOMER) active Boolean @default(true) addess String? type String provider String providerAccountId String @map("provider_account_id") refresh_token String? @db.Text access_token String? @db.Text expires_at Int? token_type String? scope String? id_token String? @db.Text session_state String? refresh_token_expires_in Int? user User @relation(fields: [userId], references: [id]) @@unique([provider, providerAccountId]) @@index([userId]) @@map("accounts") }