// 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 = "postgresql" url = env("DATABASE_URL") directUrl = env("DIRECT_URL") } // ==================== AUTH MODELS ==================== model User { id String @id @default(cuid()) name String? email String @unique emailVerified DateTime? image String? password String? // null if using OAuth createdAt DateTime @default(now()) updatedAt DateTime @updatedAt accounts Account[] sessions Session[] tasks Task[] @@map("users") } model Account { id String @id @default(cuid()) userId String type String provider String providerAccountId String refresh_token String? access_token String? expires_at Int? token_type String? scope String? id_token String? session_state String? user User @relation(fields: [userId], references: [id], onDelete: Cascade) @@unique([provider, providerAccountId]) @@map("accounts") } model Session { id String @id @default(cuid()) sessionToken String @unique userId String expires DateTime user User @relation(fields: [userId], references: [id], onDelete: Cascade) @@map("sessions") } model VerificationToken { identifier String token String @unique expires DateTime @@unique([identifier, token]) @@map("verification_tokens") } // ==================== TASK MODEL ==================== model Task { id String @id @default(cuid()) userId String title String description String? status String @default("TODO") // TODO, IN_PROGRESS, DONE deadline DateTime? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt user User @relation(fields: [userId], references: [id], onDelete: Cascade) @@index([userId]) @@index([status]) @@index([deadline]) @@map("tasks") }