Adds consultation leads, section editors, and the one-time content reset for this release. Co-authored-by: Cursor <cursoragent@cursor.com>
112 lines
2.7 KiB
Plaintext
112 lines
2.7 KiB
Plaintext
generator client {
|
|
provider = "prisma-client-js"
|
|
}
|
|
|
|
datasource db {
|
|
provider = "postgresql"
|
|
url = env("DATABASE_URL")
|
|
}
|
|
|
|
model Admin {
|
|
id String @id @default(cuid())
|
|
mobile String @unique
|
|
email String? @unique
|
|
passwordHash String
|
|
name String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
}
|
|
|
|
model SiteSettings {
|
|
id String @id @default("default")
|
|
brandName String @default("Montech")
|
|
tagline String @default("Software Development Group")
|
|
email String @default("hello@montech.ir")
|
|
phone String @default("+98 21 0000 0000")
|
|
address String @default("Tehran, IR")
|
|
timezone String @default("Asia/Tehran")
|
|
socials Json @default("[]")
|
|
logoUrl String?
|
|
updatedAt DateTime @updatedAt
|
|
}
|
|
|
|
model Page {
|
|
id String @id @default(cuid())
|
|
key String @unique
|
|
title String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
seo PageSeo?
|
|
}
|
|
|
|
model PageSeo {
|
|
id String @id @default(cuid())
|
|
pageId String @unique
|
|
page Page @relation(fields: [pageId], references: [id], onDelete: Cascade)
|
|
title String
|
|
description String @default("")
|
|
ogImage String?
|
|
canonical String?
|
|
noIndex Boolean @default(false)
|
|
}
|
|
|
|
model SectionContent {
|
|
id String @id @default(cuid())
|
|
key String @unique
|
|
data Json
|
|
updatedAt DateTime @updatedAt
|
|
}
|
|
|
|
model BlogPost {
|
|
id String @id @default(cuid())
|
|
slug String @unique
|
|
title String
|
|
excerpt String @default("")
|
|
content String @default("")
|
|
coverUrl String?
|
|
published Boolean @default(false)
|
|
publishedAt DateTime?
|
|
seoTitle String?
|
|
seoDesc String?
|
|
ogImage String?
|
|
canonical String?
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
}
|
|
|
|
model GalleryItem {
|
|
id String @id @default(cuid())
|
|
title String
|
|
imageUrl String
|
|
category String?
|
|
sortOrder Int @default(0)
|
|
published Boolean @default(true)
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
}
|
|
|
|
model Lead {
|
|
id String @id @default(cuid())
|
|
name String
|
|
phone String
|
|
businessType String
|
|
source String @default("consult")
|
|
aiQuery String?
|
|
status String @default("new")
|
|
note String?
|
|
ip String?
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
|
|
@@index([status, createdAt])
|
|
}
|
|
|
|
model Media {
|
|
id String @id @default(cuid())
|
|
filename String
|
|
url String
|
|
mimeType String
|
|
size Int
|
|
createdAt DateTime @default(now())
|
|
}
|