120 lines
2.4 KiB
Plaintext
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
|
|
}
|