Files
fullstack-portfolio/prisma/schema.prisma

120 lines
2.4 KiB
Plaintext

generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
}
model User {
id String @id @default(cuid())
email String @unique
name String
password String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model Session {
id String @id @default(cuid())
visitorId String
startedAt DateTime @default(now())
lastSeenAt DateTime @updatedAt
pageViews PageView[]
}
model PageView {
id String @id @default(cuid())
sessionId String
path String
createdAt DateTime @default(now())
session Session @relation(fields: [sessionId], references: [id])
}
model Project {
id String @id @default(cuid())
title String
description String
imageUrl String?
liveUrl String?
githubUrl String?
techStack String[] // Array of tech names
featured Boolean @default(false)
order Int @default(0)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model Experience {
id String @id @default(cuid())
company String
role String
startDate DateTime
endDate DateTime?
current Boolean @default(false)
description String
highlights String[]
techStack String[]
order Int @default(0)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model ContactMessage {
id String @id @default(cuid())
name String
email String
subject String
message String
read Boolean @default(false)
createdAt DateTime @default(now())
}
enum BlogStatus {
DRAFT
SCHEDULED
PUBLISHED
}
model Blog {
id String @id @default(cuid())
title String
slug String @unique
content String
excerpt String?
status BlogStatus @default(DRAFT)
scheduledAt DateTime?
publishedAt DateTime?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
tags Tag[]
@@index([status])
@@index([scheduledAt])
}
model Tag {
id String @id @default(cuid())
name String @unique
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
blogs Blog[]
}
model SiteConfig {
id String @id @default(cuid())
cvUrl String?
linkedinUrl String?
githubUrl String?
twitterUrl String?
heroTitle String?
heroSubtitle String?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}