90 lines
2.4 KiB
Plaintext
90 lines
2.4 KiB
Plaintext
// 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")
|
|
}
|
|
|
|
// Modelo de Usuário (para o Painel Admin)
|
|
model User {
|
|
id String @id @default(cuid())
|
|
email String @unique
|
|
password String
|
|
name String?
|
|
avatar String?
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
}
|
|
|
|
// Modelo de Projeto
|
|
model Project {
|
|
id String @id @default(cuid())
|
|
title String
|
|
category String
|
|
client String?
|
|
status String @default("Em andamento") // "Em andamento", "Concluído"
|
|
completionDate DateTime?
|
|
description String? @db.Text
|
|
coverImage String?
|
|
galleryImages String[]
|
|
featured Boolean @default(false)
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
}
|
|
|
|
// Modelo de Serviço
|
|
model Service {
|
|
id String @id @default(cuid())
|
|
title String
|
|
icon String
|
|
shortDescription String?
|
|
fullDescription String? @db.Text
|
|
active Boolean @default(true)
|
|
order Int @default(0)
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
}
|
|
|
|
// Modelo de Mensagem (Contato)
|
|
model Message {
|
|
id String @id @default(cuid())
|
|
name String
|
|
email String
|
|
subject String
|
|
message String @db.Text
|
|
status String @default("Nova") // "Nova", "Lida", "Respondida"
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
}
|
|
|
|
// Modelo de Conteúdo de Página (para textos editáveis)
|
|
// Cada página tem uma versão para cada idioma
|
|
model PageContent {
|
|
id String @id @default(cuid())
|
|
slug String // "home", "sobre", "contato"
|
|
locale String @default("pt") // "pt", "en", "es"
|
|
content Json
|
|
updatedAt DateTime @updatedAt
|
|
|
|
@@unique([slug, locale]) // Uma entrada por página+idioma
|
|
@@index([slug])
|
|
}
|
|
|
|
// Modelo de Tradução (cache persistente)
|
|
model Translation {
|
|
id String @id @default(cuid())
|
|
sourceText String @db.Text
|
|
sourceLang String @default("pt")
|
|
targetLang String
|
|
translatedText String @db.Text
|
|
createdAt DateTime @default(now())
|
|
|
|
@@unique([sourceText, sourceLang, targetLang])
|
|
@@index([sourceLang, targetLang])
|
|
}
|